草庐IT

ienumerable

全部标签

c# - 如果我只能定义一个 GetEnumerator,为什么要实现 IEnumerable(T)?

更新:我感谢所有的评论,这些评论基本上包含了一致的反对意见。虽然提出的每一个反对意见都是有效的,但我觉得棺材上的最终钉子是Ani'sastuteobservation最终,即使是这个想法表面上提供的一个微小好处——消除样板代码——也被这个想法本身需要其拥有样板代码。所以,是的,相信我:这将是一个坏主意。只是为了在某种程度上挽救我的尊严:我可能会为了争论而夸大它,但我从来没有真正接受过这个想法-只是想听听其他人对此有何评论。诚实。在您将这个问题视为荒谬之前,我请您考虑以下几点:IEnumerable继承自*IEnumerable,这意味着任何实现IEnumerable的类型通常必须实现两

c# - 为什么 IEnumerable<T> 没有 FindAll 或 RemoveAll 方法?

在我看来IList上有很多扩展方法同样适用于IEnumerable-例如FindAll和RemoveAll.谁能解释一下为什么他们不在那里? 最佳答案 RemoveAll没有任何意义,因为该API上没有Remove等-但是是FindAll从3.5开始-但它被称为Where:IEnumerablesource=...varfiltered=source.Where(x=>x.IsActive&&x.Id=25);相当于:IEnumerablesource=...varfiltered=fromxinsourcewherex.IsAct

c# - 从 IEnumerable 获取非不同元素

我有一个名为Item的类。Item有一个名为ItemCode的标识符属性,它是一个字符串。我想获得项目列表中所有非不同项目的列表。例子:ListitemList=newList(){newItem("code1","description1"),newItem("code2","description2"),newItem("code2","description3"),};我想要一个包含底部两个条目的列表如果我用vardistinctItems=itemsList.Distinct();我得到了不同项目的列表,这很棒,但我想要的恰恰相反。我可以从原始列表中减去不同的列表,但不会包含所

c# - 如何使用 LINQ 和 C# 更新带有列表的元素

我有一个对象列表,我想更新其中一个对象中的特定成员变量。我知道LINQ是为查询而设计的,并不意味着更新不可变数据列表。实现这一目标的最佳方法是什么?如果它不是最有效的,我不需要使用LINQ作为解决方案。创建更新扩展方法是否可行?如果是这样,我该怎么做?EXAMPLE:(fromtradeinCrudeBalancedListwheretrade.Date.Month==monthIndexselecttrade).Update(trade=>trade.Buy+=optionQty); 最佳答案 虽然linq并不意味着更新不可变数据

c# - 检查 IEnumerable 是否有任何行而不枚举整个列表

我有以下方法返回T类型的IEnumerable。方法的实现并不重要,除了yieldreturn到lazyloadIEnumerable之外。这是必要的,因为结果可能有数百万个项目。publicIEnumerableParse(){foreach(...){yieldreturnparsedObject;}}问题:我有以下属性可用于确定IEnumerable是否包含任何项目:publicboolHasItems{get{returnParse().Take(1).SingleOrDefault()!=null;}}是否有更好的方法来做到这一点? 最佳答案

c# - IEnumerable<T> 的作用是什么,我为什么要使用它?

我为什么要使用IEnumerable当我可以凑合的时候...说List?前者比后者有什么优势? 最佳答案 IEnumerable是一个接口(interface),告诉我们可以枚举T的序列实例。如果您需要允许某人查看集合中的每个对象并执行某些操作,这就足够了。List,另一方面,是IEnumerable的具体实现以特定的已知方式存储对象。在内部,这可能是一种很好的方式来存储您通过IEnumerable公开的值。,而是一个List并不总是合适的。例如,如果您不需要按索引访问项目,而是不断地在集合的开头插入项目,然后从末尾删除项目,则Qu

c# - 如何将 "zip"或 "rotate"列为可变数量的列表?

如果我有一个包含任意数量列表的列表,如下所示:varmyList=newList>(){newList(){"a","b","c","d"},newList(){"1","2","3","4"},newList(){"w","x","y","z"},//...etc...};...有没有办法以某种方式将列表“压缩”或“旋转”成这样的东西?{{"a","1","w",...},{"b","2","x",...},{"c","3","y",...},{"d","4","z",...}}显而易见的解决方案是做这样的事情:publicstaticIEnumerable>Rotate(thisI

c# - 使用 LINQ 生成排列

我有一组必须安排的产品。有P个产品,每个产品的索引从1到P。每个产品都可以安排到0到T的时间段。我需要构建满足以下约束的产品计划的所有排列:Ifp1.Index>p2.Indexthenp1.Schedule>=p2.Schedule.我正在努力构建迭代器。我知道当产品数量是已知常量时如何通过LINQ执行此操作,但我不确定当产品数量是输入参数时如何生成此查询。理想情况下,我想使用yield语法来构造此迭代器。publicclassPotentialSchedule(){publicPotentialSchedule(int[]schedulePermutation){_schedule

c# - 如何在 GridView 中启用 IEnumerable 数据的自动排序?

我如何启用我的BLL的自动排序,它返回一个列表,CustomerList:GridView中的列表?Customer是我自己的强类型类,CustomerList是一个客户列表。我知道一种方法是在GridView中将AllowSorting属性设置为true并处理OnSorting事件并调用在我的CustomerList类中定义的排序方法。但是我想要一个自动解决方案,因为我不必处理OnSorting事件,它应该像GridView处理DataView、DataTable和DataSet的自动排序一样。是否需要在我的CustomerList或Customer类上实现一个接口(interfac

c# - IEnumerable<T>.Count 在哪些情况下进行了优化?

使用reflector我注意到System.Linq.Enumerable.Count方法中有一个条件可以针对IEnumerable的情况对其进行优化。passed实际上是一个ICollection.如果转换成功,Count方法不需要遍历每个元素,而是可以调用ICollection的Count方法。基于此,我开始认为IEnumerable可以像集合的只读View一样使用,而不会出现我最初基于IEnumerable的API预期的性能损失我感兴趣的是是否优化了CountIEnumerable时仍然成立是Select的结果关于ICollection的声明,但根据反射(reflect)的代码,