Questions tagged «ienumerable»

IEnumerable及其通用的IEnumerable <T>是.NET接口,用于迭代(或枚举)项目集合。

14
返回IEnumerable <T>与IQueryable <T>
Return IQueryable&lt;T&gt;与vs 之间的区别是什么IEnumerable&lt;T&gt;,何时应该优先选择另一个? IQueryable&lt;Customer&gt; custs = from c in db.Customers where c.City == "&lt;City&gt;" select c; IEnumerable&lt;Customer&gt; custs = from c in db.Customers where c.City == "&lt;City&gt;" select c;


10
IEnumerable vs List-使用什么?它们如何工作?
我对Enumerators和LINQ的工作方式有疑问。考虑以下两个简单选择: List&lt;Animal&gt; sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct().ToList(); 要么 IEnumerable&lt;Animal&gt; sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct(); 我更改了原始对象的名称,以使其看起来像一个更通用的示例。查询本身不是那么重要。我想问的是: foreach (Animal animal in sel) { /*do stuff*/ } 我注意到,如果我使用IEnumerable,当我调试并检查“ sel”(在这种情况下为IEnumerable)时,它具有一些有趣的成员:“ inner”,“ outer”,“ …
675 c#  linq  list  ienumerable 



18
将单个项目作为IEnumerable <T>传递
是否有一种常见的方法将单个类型的项目传递给T需要IEnumerable&lt;T&gt;参数的方法 ?语言是C#,框架版本2.0。 当前,我正在使用辅助方法(它是.Net 2.0,所以我有一堆类似于LINQ的强制转换/投影辅助方法),但这似乎很愚蠢: public static class IEnumerableExt { // usage: IEnumerableExt.FromSingleItem(someObject); public static IEnumerable&lt;T&gt; FromSingleItem&lt;T&gt;(T item) { yield return item; } } 当然,其他方法是创建并填充a List&lt;T&gt;或an Array并将其传递给而不是IEnumerable&lt;T&gt;。 [编辑]作为扩展方法,它可以命名为: public static class IEnumerableExt { // usage: someObject.SingleItemAsEnumerable(); public static IEnumerable&lt;T&gt; SingleItemAsEnumerable&lt;T&gt;(this T item) { yield return item; } } 我在这里想念什么吗? [Edit2]我们发现someObject.Yield()(如@Peter在下面的评论中所建议的)是此扩展方法的最佳名称,主要是为了简洁起见,因此,如果有人想要抓住它,它与XML注释一起使用: public …
377 c#  .net  generics  ienumerable 

6
如何返回一个空的IEnumerable?
鉴于以下代码和此问题给出的建议,我决定修改此原始方法,并询问IEnumarable中是否有任何值返回它,如果不返回没有值的IEnumerable。 方法如下: public IEnumerable&lt;Friend&gt; FindFriends() { //Many thanks to Rex-M for his help with this one. //https://stackoverflow.com/users/67/rex-m return doc.Descendants("user").Select(user =&gt; new Friend { ID = user.Element("id").Value, Name = user.Element("name").Value, URL = user.Element("url").Value, Photo = user.Element("photo").Value }); } 由于所有内容都在return语句中,所以我不知道该怎么做。这样的事情行吗? public IEnumerable&lt;Friend&gt; FindFriends() { //Many thanks to Rex-M for his help with …
329 c#  ienumerable 

19
从IEnumerable <T>计算项目而不进行迭代?
private IEnumerable&lt;string&gt; Tables { get { yield return "Foo"; yield return "Bar"; } } 假设我要在这些对象上进行迭代并编写类似处理#m的#n的内容。 有没有一种方法可以在我的主迭代之前不进行迭代就找出m的值? 我希望我能说清楚。
317 c#  .net  ienumerable 

8
IEnumerable和使用收益回报的递归
我有一种IEnumerable&lt;T&gt;用于在WebForms页面中查找控件的方法。 该方法是递归的,当返回yield return值为递归调用的值时,返回我想要的类型时遇到一些问题。 我的代码如下所示: public static IEnumerable&lt;Control&gt; GetDeepControlsByType&lt;T&gt;(this Control control) { foreach(Control c in control.Controls) { if (c is T) { yield return c; } if(c.Controls.Count &gt; 0) { yield return c.GetDeepControlsByType&lt;T&gt;(); } } } 当前,这将引发“无法转换表达式类型”错误。但是IEnumerable&lt;Object&gt;,如果此方法返回type ,则代码会生成,但是在输出中返回错误的类型。 有没有yield return同时使用递归的使用方法?

16
谁能向我解释IEnumerable和IEnumerator?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 11个月前关闭。 改善这个问题 谁能向我解释IEnumerable和IEnumerator? 例如,何时在foreach上使用它?IEnumerable和IEnumerator有什么区别?我们为什么需要使用它?

6
从List <X>转换为List <Y>的语法较短吗?
我知道可以一次将一种类型的项目列表转换为另一种类型(假设您的对象具有公共静态显式运算符方法进行转换),如下所示: List&lt;Y&gt; ListOfY = new List&lt;Y&gt;(); foreach(X x in ListOfX) ListOfY.Add((Y)x); 但是不可能一次投射整个列表吗?例如, ListOfY = (List&lt;Y&gt;)ListOfX;
237 c#  list  casting  ienumerable 


2
从IEnumerable <KeyValuePair <>>重新创建字典
我有一个返回的方法IEnumerable&lt;KeyValuePair&lt;string, ArrayList&gt;&gt;,但是某些调用者要求该方法的结果为字典。如何将转换IEnumerable&lt;KeyValuePair&lt;string, ArrayList&gt;&gt;为Dictionary&lt;string, ArrayList&gt;以便使用TryGetValue? 方法: public IEnumerable&lt;KeyValuePair&lt;string, ArrayList&gt;&gt; GetComponents() { // ... yield return new KeyValuePair&lt;string, ArrayList&gt;(t.Name, controlInformation); } 呼叫者: Dictionary&lt;string, ArrayList&gt; actual = target.GetComponents(); actual.ContainsKey("something");

6
立即退还所有可枚举的收益;没有循环
我具有以下功能来获取卡的验证错误。我的问题与处理GetErrors有关。两种方法具有相同的返回类型IEnumerable&lt;ErrorInfo&gt;。 private static IEnumerable&lt;ErrorInfo&gt; GetErrors(Card card) { var errors = GetMoreErrors(card); foreach (var e in errors) yield return e; // further yield returns for more validation errors } 是否可以返回所有错误GetMoreErrors而不必通过错误进行枚举? 考虑一下这可能是一个愚蠢的问题,但是我想确保自己没有错。

22
如何检查IEnumerable是否为null或为空?
我喜欢string.IsNullOrEmpty方法。我很想拥有可以为IEnumerable提供相同功能的东西。有吗 也许一些收集助手类?我要问的原因是,if如果状态为,则语句中的代码看起来很混乱(mylist != null &amp;&amp; mylist.Any())。拥有它会更清洁Foo.IsAny(myList)。 这篇文章没有给出答案:IEnumerable是否为空?。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.