草庐IT

IEnumerable

全部标签

c# - LINQ - 在 IEnumerable 中选择第二个项目

我有string[]pkgratio="1:2:6".Split(':');varitems=pkgratio.OrderByDescending(x=>x);我想选择中间值并想出了这个。这是在IEnumberable中选择第二个值的正确方法吗?pkgratio.Skip(1).Take(1).First(); 最佳答案 虽然您的工作有效,但最直接的方法是使用数组的索引并引用第二项(在索引1处,因为第一个元素的索引从零开始):pkgratio[1]Console.WriteLine(pkgratio[1]);一个更完整的例子:str

c# - 获取随机子集合的最佳 LINQ 查询 - Shuffle

请提出一种最简单的方法,从具有“N”项的集合中获取计数为“n”的随机混洗集合。其中n 最佳答案 根据mquander的回答和DanBlanchard的评论,这里有一个LINQ友好的扩展方法,它执行Fisher-Yates-Durstenfeldshuffle://takenrandomitemsfromyourCollectionvarrandomItems=yourCollection.Shuffle().Take(n);//...publicstaticclassEnumerableExtensions{publicstatic

c# - 获取随机子集合的最佳 LINQ 查询 - Shuffle

请提出一种最简单的方法,从具有“N”项的集合中获取计数为“n”的随机混洗集合。其中n 最佳答案 根据mquander的回答和DanBlanchard的评论,这里有一个LINQ友好的扩展方法,它执行Fisher-Yates-Durstenfeldshuffle://takenrandomitemsfromyourCollectionvarrandomItems=yourCollection.Shuffle().Take(n);//...publicstaticclassEnumerableExtensions{publicstatic

c# - 为什么 Any() 不适用于 c# 空对象

调用Any()时在空对象上,它在C#中抛出ArgumentNullException。如果对象为null,则肯定没有“any”,它可能应该返回false。为什么C#会这样? 最佳答案 Any()是在问:“这个盒子里有没有元素?”如果方框是空的,答案显然是否定的。但如果一开始就没有盒子,那么这个问题就没有意义了,函数会提示:“你到底在说什么?没有盒子。”当我想将缺失的集合视为空集合时,我使用以下扩展方法:publicstaticIEnumerableOrEmpty(thisIEnumerablesequence){returnsequ

c# - 为什么 Any() 不适用于 c# 空对象

调用Any()时在空对象上,它在C#中抛出ArgumentNullException。如果对象为null,则肯定没有“any”,它可能应该返回false。为什么C#会这样? 最佳答案 Any()是在问:“这个盒子里有没有元素?”如果方框是空的,答案显然是否定的。但如果一开始就没有盒子,那么这个问题就没有意义了,函数会提示:“你到底在说什么?没有盒子。”当我想将缺失的集合视为空集合时,我使用以下扩展方法:publicstaticIEnumerableOrEmpty(thisIEnumerablesequence){returnsequ

c# - C# 中的成对迭代或滑动窗口枚举器

如果我有一个像这样的IEnumerable:string[]items=newstring[]{"a","b","c","d"};我想遍历所有成对的连续项目(大小为2的滑动窗口)。这将是("a","b"),("b","c"),("c","d")我的解决方案是这样的publicstaticIEnumerable>Pairs(IEnumerableenumerable){IEnumeratore=enumerable.GetEnumerator();e.MoveNext();Tcurrent=e.Current;while(e.MoveNext()){Tnext=e.Current;yie

c# - C# 中的成对迭代或滑动窗口枚举器

如果我有一个像这样的IEnumerable:string[]items=newstring[]{"a","b","c","d"};我想遍历所有成对的连续项目(大小为2的滑动窗口)。这将是("a","b"),("b","c"),("c","d")我的解决方案是这样的publicstaticIEnumerable>Pairs(IEnumerableenumerable){IEnumeratore=enumerable.GetEnumerator();e.MoveNext();Tcurrent=e.Current;while(e.MoveNext()){Tnext=e.Current;yie

c# - 相交 LINQ 查询

如果我有一个IEnumerable,其中ClassA公开了一个long类型的ID属性。是否可以使用Linq查询获取ID属于第二个IEnumerable的所有ClassA实例?也就是说,这可以做到吗?IEnumerable=original.Intersect(idsToFind....)?其中original是IEnumerableidsToFind是IEnumerable. 最佳答案 是的。正如其他人回答的那样,您可以使用Where,但对于大型集合来说效率极低。如果性能是一个问题,您可以调用Join:varresults=orig

c# - 相交 LINQ 查询

如果我有一个IEnumerable,其中ClassA公开了一个long类型的ID属性。是否可以使用Linq查询获取ID属于第二个IEnumerable的所有ClassA实例?也就是说,这可以做到吗?IEnumerable=original.Intersect(idsToFind....)?其中original是IEnumerableidsToFind是IEnumerable. 最佳答案 是的。正如其他人回答的那样,您可以使用Where,但对于大型集合来说效率极低。如果性能是一个问题,您可以调用Join:varresults=orig

c# - 在 ASP.NET MVC 中使用带有 IEnumerable 模型的自定义编辑器模板的正确、惯用的方法

Thisquestionisafollow-upforWhyismyDisplayFornotloopingthroughmyIEnumerable?快速刷新。时间:该模型具有类型为IEnumerable的属性您将此属性传递给Html.EditorFor()使用只接受lambda表达式的重载您有一个类型为T的编辑器模板在Views/Shared/EditorTemplates下然后MVC引擎将自动为可枚举序列中的每个项目调用编辑器模板,生成结果列表。例如,当有一个模型类时Order有属性(property)Lines:publicclassOrder{publicIEnumerable