Tag: ienumerable

如何声明具有匿名类型的字段(C#)

在下面的代码中,如何将myLine声明为公共(全局)变量? 问题是我不能使用关键字“var”。 public static IEnumerable ReadLines(StreamReader reader) { while (!reader.EndOfStream) { yield return reader.ReadLine(); } } private void Filter1(string filename) { using(var writer = File.CreateText(Application.StartupPath + “\\temp\\test.txt”)) { using (var reader = File.OpenText(filename)) { int[] Ids = { 14652, 14653, 14654, 14655, 14656, 14657, 14658, 14659, 14660 }; var myLine = from line in ReadLines(reader) […]

有条件地平均DataTable中的一列数据

我有一个DataTable对象dTable,其中所有DataColumn数据类型都是字符串或双精度型。 列中的某些数字不存在。 ie = null。 现在我有下面的代码找到平均值,当有值时,它运行良好。 var sum = dTable.AsEnumerable().Average(x => { if (dTable.Columns[col]!=null) { return x.Field(dTable.Columns[col].ColumnName); } else { return ???; }; }); 我的问题是当不满足跳过那个x时,我该返回什么? 当我在dTable中遇到一个空单元格时,它似乎不知道该怎么做。 或者,如果有一条完全不同的道路,我应该走下去……请务必……

在IEnumerable中向上移动项目

我需要在IEnumerable 中移动一个项目,即将一个项目移到另一个上面。 最简单的方法是什么? 这里有一个类似的问题,但我没有通用列表只有IEnumerable : Generic List – 在列表中移动一个项目

c#Linq’s – GroupedEnumerable用法?

Fruit[] data = new[] { new Fruit {Name = “Gala”,Type = “Apple”,Price = 0.75m,Quantity = 10}, new Fruit {Name = “Granny Smith”,Type = “Apple”,Price = 0.80m,Quantity = 7}, new Fruit {Name = “Tasty”,Type = “Strawberries”,Price = 1.90m,Quantity = 20} }; var grouped = from fruit in data group fruit by fruit.Type; grouped类型是: System.Linq.GroupedEnumerable 看看它: 我的问题 […]

IEnumerable的随机顺序

我有一个IEnumerable集合如下 var result1 = GetResult1() // Returns 2,4,5,6 我必须以随机方式处理元素并创建另一个集合,其结果如下: var result2 = GetResult2(result1) // Returns 2,4,5,6 in a random order. // An example output would be 4,6,2,5 in the resultant collection. 我通过以下方式完成此操作: var result1 = GetResult1(); var random = new Random(); var result2 = result1.OrderBy(order=>random.Next()); 然而,问题在于,如果我访问result2,result2中的元素会再次被洗牌,即如果我将result2的结果输出到控制台两次,则元素会再次变为juggled。 你能告诉我如何保持这种制服。 也就是说,一旦我处理了这个集合,它应该保持相同的方式。 我必须使用懒惰的评估,因为结果非常大。

为什么我们需要IEnumerator和IEnumerable?

好的,我只是在处理IEnumerator和IEnumerable 。 现在MSDN说这些东西的主要目标是遍历客户集合。 很公平,我可以在不使用任何一个的情况下迭代自定义集合(或者至少我想这么认为) namespace ienumerator { class person { public person(string first, string second) { fname = first; lname = second; } public string fname { get; set; } public string lname { get; set; } } class person_list { public person[] list; public person_list(person[] per) { list = new person[per.Length]; for (int i […]

当Linq没有返回时返回一个空集合

我正在使用以下语句,目的是从MachineList集合(类型IEnumerable)获取具有i的MachineStatus的所有机器对象。 MachineList集合不会始终包含状态为i的计算机 。 有时没有机器有我的MachineStatus我想要返回一个空集合。 我对ActiveMachines (首先使用)的调用有效但InactiveMachines没有。 public IEnumerable ActiveMachines { get { return Customer.MachineList .Where(m => m.MachineStatus == “a”); } } public IEnumerable InactiveMachines { get { return Customer.MachineList .Where(m => m.MachineStatus == “i”); } } 编辑 经过进一步检查,似乎MachineList任何枚举都会导致MachineList后续枚举抛出exception: Object reference not set to an instance of an object 。 因此,调用ActiveMachines或InactiveMachines作为MachineList集合的问题并不重要。 这尤其令人不安,因为我可以通过在Watch中调用它来调用MachineList ,然后再在代码中调用它。 在最低级别, MachineList实现了NHibernate.IQuery作为IEnumerable返回。 什么导致MachineList在初始枚举后丢失其内容?

有人可以解释这个懒惰的评估代码吗?

所以,这个问题刚刚被问到: 如何处理“无限”IEnumerable? 我的示例代码: public static void Main(string[] args) { foreach (var item in Numbers().Take(10)) Console.WriteLine(item); Console.ReadKey(); } public static IEnumerable Numbers() { int x = 0; while (true) yield return x++; } 有人可以解释为什么这是懒惰的评估? 我在Reflector中查找了这段代码,而且比起初时我更困惑。 reflection器输出: public static IEnumerable Numbers() { return new d__0(-2); } 对于numbers方法,看起来为该表达式生成了一个新类型: [DebuggerHidden] public d__0(int 1__state) { this.1__state = 1__state; this.l__initialThreadId = […]

使用Protobuf-net和Monotouch for IOS序列化IEnumerable槽WCF

我正在尝试在Monotouch / Monodevelop上为IOS编写WCF服务。 我使用[DataMember] / [DataContract]等标准属性作为我的可序列化对象,使用[ServiceContract] / [OperationContract]作为我的界面。 一切正常,但是当我尝试在接口实现(服务器端)上实现返回IEnumerable的方法时,它没有用。 所以为了解决我的问题,我尝试使用最新版本的protobuf-net protobuf-net v2 beta r404。 但是我仍然从Protobuf-net那里得到序列化错误。 请注意,“MyObject”中的IEnumerable序列化没有问题。 以下是我的代码现在的样子: 为MyObject: [ProtoContract] public class MyObject { public MyObject () { } [ProtoMember(1)] public int Id {get;set;} [ProtoMember(2)] public IEnumerable myObjects {get;set;} } 我的界面(Windows上的服务器端): [ServiceContract] public interface ITouchService { [OperationContract, ProtoBehavior] MyObject Execute(); [OperationContract, ProtoBehavior] IEnumerable ExecuteENUM (); } […]

如何将IEnumerable的IEnumerable中的所有元素连接在一起?

万一你想知道这是怎么出现的,我正在使用Entity Framework的一些结果集。 我有一个IEnumerable<IEnumerable> ; 基本上,字符串列表的列表。 我想将所有字符串列表合并为一个大的字符串列表。 在C#.net中执行此操作的最佳方法是什么?