草庐IT

ienumerator

全部标签

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

在Resharper5中,以下代码导致list出现警告“Parametercanbedeclaredwithbasetype”:publicvoidDoSomething(Listlist){if(list.Any()){//...}foreach(variteminlist){//...}}在Resharper6中,情况并非如此。但是,如果我将方法更改为以下内容,我仍然会收到该警告:publicvoidDoSomething(Listlist){foreach(variteminlist){//...}}原因是,在这个版本中,list只枚举一次,所以改成IEnumerable不会自动

c# - 是否可以将 GroupCollection 转换为 List 或 IEnumerable?

是否可以将GroupCollection转换为List或IEnumerable?我指的是正则表达式中的GroupCollection。 最佳答案 当然GroupCollectioncol=...;IEnumerableenumerable=col.Cast();Listlist=col.Cast().ToList(); 关于c#-是否可以将GroupCollection转换为List或IEnumerable?,我们在StackOverflow上找到一个类似的问题:

c# - 为什么使用 IList 而不是 IEnumerable?

1)我阅读了一些(一般)代码片段并看到一些地方使用了IList还有一些用过IEnumerable.使用前者优于后者的优点是什么?2)is和as在C#中。我明白is进行类型检查和as做类型转换。但究竟什么是类型转换?强制数据到某个大小的对象?什么时候is和as有区别吗? 最佳答案 AIList[]代表的东西:可以迭代是有限的,已知的大小可重复可以通过索引随机访问可以(可选,可检查)进行编辑:重新分配值、添加、删除等安IEnumerable,另一方面,只能迭代。并非所有可以迭代的东西都是列表。例如:staticIEnumerableGe

c# - IEnumerable<T> 和 IQueryable<T> 说明?

看完this题,我需要弄清楚一些事情。IQueryablecusts=fromcindb.Customerswherec.City==""selectc;IEnumerablecusts=fromcindb.Customerswherec.City==""selectc;问题:1)可以这样说吗:在第一个查询中,SQLServer正在运行整个操作,包括where子句并返回ONLY相关行-而第二个查询执行SELECT*...并将所有行返回到C#和THEN过滤器中?2)如果我仅在内存中有一个集合怎么办。(varlstMyPerson=newList())IQueryablelst=fromc

c# - IEnumerable<string> 到 SelectList,没有选择值

我在ASP.NETMVC应用程序中有如下内容:IEnumerablelist=GetTheValues();varselectList=newSelectList(list,"SelectedValue");即使选择的值已定义,它也没有在View中被选中。我有这种感觉,我在这里遗漏了一些东西,所以如果有人可以让我摆脱痛苦!我知道我可以使用烦人的类型来提供键和值,但如果没有必要,我宁愿不添加额外的代码。编辑:此问题已由ASP.NETMVCRTM修复。 最佳答案 试试这个:IDictionarylist=GetTheValues();v

c# - 类是否需要实现 IEnumerable 才能使用 Foreach

这是在C#中,我有一个正在使用其他人的DLL的类。它没有实现IEnumerable,但有2个方法可以传回IEnumerator。有没有一种方法可以在这些上使用foreach循环。我正在使用的类是密封的。 最佳答案 foreach不需要IEnumerable,这与普遍的看法相反。它所需要的只是一个方法GetEnumerator,该方法返回具有方法MoveNext和具有适当签名的get-propertyCurrent的任何对象。/编辑:然而,在你的情况下,你运气不好。但是,您可以简单地包装您的对象以使其可枚举:classEnumerab

c# - Queue 上的 IEnumerable 迭代器是否应该使项目出列

我创建了一个实现通用IQueue接口(interface)的自定义通用队列,该接口(interface)使用System.Collections.Generic命名空间中的通用队列作为私有(private)内部队列。示例已清除不相关的代码。publicinterfaceIQueue{voidEnqueue(TQueueItemqueueItem);TQueueItemDequeue();}publicclassCustomQueue:IQueue{privatereadonlyQueuequeue=newQueue();...publicvoidEnqueue(TQueueItemqu

c# - IEnumerable<string> 到字符串

考虑一下:stringtest="";somestring.ToList().Take(50).Select(delegate(charx){test+=x;returnx;});为什么是test之后是空的?我实际上并不关心它的返回(我知道它的IEnumerable)。如果这一切看起来一团糟,那么我该如何转换IEnumerable由Select()返回至string? 最佳答案 因为您没有执行查询。Linq很懒惰。当您执行foreach或ToList/ToArray/ToDictionary时,它将被执行。我建议这样做stringt

c# - 检查 IEnumerable<T> 是否有具有重复属性的项目

如何检查IEnumerable是否有两个或多个具有相同属性值的项目?例如一个类publicclassItem{publicintProp1{get;set;}publicstringProp2{get;set;}}然后是IEnumerable类型的集合如果Prop1中存在具有重复值的项目,我需要返回false。 最佳答案 您只想检查Prop1对吗?关于:IEnumerableitems=...varnoDistinct=items.GroupBy(x=>x.Prop1).All(x=>x.Count()==1);//itreturn

c# - IEnumerable 扩展

我想制作一个IEnumerable可以将自身转换为IEnumerable的扩展.到目前为止,我一直在尝试这样做:publicstaticIEnumerableToSelectItemList(thisIEnumerableenumerable,Functext,Funcvalue){ListselectList=newList();foreach(TSourcemodelinenumerable)selectList.Add(newSelectListItem(){Text=?,Value=?});returnselectList;}这样做正确吗?如果是这样,我如何从Func中的适当值