草庐IT

ienumerator

全部标签

c# - 在 C# 中为 IEnumerable 实现的 F# Seq 模块?

F#有一堆标准的序列运算符,我从使用Mathematica的经验中了解到并喜欢上了这些运算符。F#现在引起了我的广泛关注,当它正式发布时,我打算经常使用它。目前,由于F#尚未正式发布,我无法真正在生产代码中使用它。LINQ使用类似SQL的名称(例如“select”是“map”,“where”是“filter”)实现其中一些运算符,但我找不到“fold”、“iter”或“partition”的实现。有人见过标准序列运算符的C#实现吗?这是某人应该写的东西吗? 最佳答案 如果仔细观察,许多Seq操作都有LINQ等价物,或者可以很容易地推

c# - 更新 IEnumerable 中的项目

我需要更新IEnumerable列表中的值。这是一个简短的IEnumerable示例:IEnumerableallsubdirs=newList(){"a","b","c"};现在,如果我想为每个项目添加时间戳,这是行不通的:allsubdirs.Select(a=>a=a+"_"+DateTime.Now.ToString("hhmmss")).ToList();这也不是:foreach(variteminallsubdirs)item=item+"_"+DateTime.Now.ToString("hhmmss");我让它像这样工作:IEnumerablenewallsubdirs

c# - IEnumerable foreach,对最后一个元素做一些不同的事情

我有一个IEnumerable.我想为集合中的每个项目做一件事,除了最后一个项目,我想对它做其他事情。我怎样才能整齐地编码呢?在伪代码中foreach(varitemincollection){if(final){g(item)}else{f(item)}}所以如果我的IEnumerable是Enumerable.Range(1,4)我会做f(1)f(2)f(3)g(4)。注意。如果我的IEnumerable恰好是长度1,我想要g(1)。我的IEnumerable碰巧有点糟糕,使Count()和遍历整个事情一样昂贵。 最佳答案 自从

c# - 使用数组实现 IEnumerable

这可能是一个简单的语法问题,但我想不出来。通常,我会这样做:publicclassOrderBook:IEnumerable{privatereadonlyListPriceLevels=newList();publicIEnumeratorGetEnumerator(){returnPriceLevels.GetEnumerator();}IEnumeratorIEnumerable.GetEnumerator(){returnPriceLevels.GetEnumerator();}}但我不想使用列表,而是使用数组-如下所示:publicclassArrayOrderBook:IE

c# - 确定 .NET 中两个 IEnumerable<T> 集的相对补码

有没有简单的方法来获取relativecomplement两套?也许使用LINQ?我必须找到集合A相对于B的相对恭维。A和B的类型都是HashSet但我认为该算法可以更通用(IEnumerable甚至ISet)?我可以使用VB.NET或C#中的解决方案。 最佳答案 你试过了吗Enumerable.Except?setB.Except(setA)例子:HashSetsetB=newHashSet{1,2,3,4,5};HashSetsetA=newHashSet{1,3,5,7};HashSetresult=newHashSet(se

c# - 使用 LINQ 更新 IEnumerable 对象的简单方法

假设我有这样一个业务对象,classEmployee{publicstringname;publicintid;publicstringdesgination;publicintgrade;}ListlstEmp=newList(){newEmployee(){name="A",desgination="SE",id=1},newEmployee(){name="b",desgination="TL",id=2},newEmployee(){name="c",desgination="PL",id=3},newEmployee(){name="d",desgination="SE",i

c# - 测试对象是否为 IEnumerable 的最快方法是什么?

有没有一种快速的方法来查明object变量的内容是否支持IEnumerable?具体来说,我正在使用System.Xml.XPath中的XPathEvaluate(),它可以返回“Anobjectthatcancontainabool,adouble,astring,oranIEnumerable.”所以执行后:XDocumentcontent=XDocument.Load("foo.xml");objectaction=content.XPathEvaluate("/bar/baz/@quux");//DoInowcallaction.ToString(),orforeach(var

c# - 合并 IEnumerable 中的重复元素

我目前有一个IEnumerable其中MyObject具有属性StringName和longValue.如果我在Enumerable中有10个MyObject的实例,每个都有不同的名称和值,除了一个与另一个具有相同的名称。.NET(或LINQ)是否有一个内置方法可以让我找到重复项,如果可能,合并Value属性,以便在可枚举中最终只有9个元素,每个元素都有一个不同的Name有重复的那个有Value等于其自身和副本的总和。到目前为止,我发现迭代整个IEnumerable的唯一方法并查找重复项并生成一个新的IEnumerable独特的项目,但这似乎不整洁和缓慢。

c# - 将对象转换为 IEnumerable<object>?

如何转换object至IEnumerable?我知道对象实现了IEnumerable但我不知道它是什么类型。它可以是一个数组,一个List,或其他。我正在尝试开始工作的一个简单测试用例:staticvoidMain(string[]args){objectarr=new[]{1,2,3,4,5};foreach(variteminarrasIEnumerable)Console.WriteLine(item);Console.ReadLine();} 最佳答案 我遇到了协方差不支持值类型的相同问题,我有一个object与实际类型Li

c# - 使用 IEnumerator 遍历列表

假设我有一个员工实例列表,employeeList.我可以像这样遍历它们:IEnumeratorenumerator=employeeList.GetEnumerator();while(enumerator.MoveNext()){Console.Write(enumerator.Current+"");}我有三个问题:我对枚举器的工作原理有一个大概的了解,就像C++中的迭代器一样。但我不明白MoveNext()方法(如C++中的itr++),因为该方法首先检查条件(是否在最后一个元素中)。假设我们使用enumerator.Current访问第一个元素:我认为它实际上已经“移动”到列