草庐IT

ienumerator

全部标签

c# - 关于泛型和 IEnumerable 的方法重载解析

前几天我注意到了这一点,假设你有两个重载方法:publicvoidPrint(IEnumerableitems){Console.WriteLine("IEnumerableT");}publicvoidPrint(Titem){Console.WriteLine("SingleT");}这段代码:publicvoidTestMethod(){varpersons=new[]{newPerson{Name="Yan",Age=28},newPerson{Name="Yinan",Age=28}};Print(persons);Print(persons.ToList());}打印:Si

c# - 在 C# 中链接 IEnumerables?

有没有一种简单的内置方法来获取IEnumerable的有序列表并返回单个IEnumerable,它按顺序产生第一个中的所有元素,然后是第二个,依此类推。我当然可以自己写,但我想知道在我做之前是否已经有办法完成这个看似有用的任务。 最佳答案 试试SelectMany。IEnumerableCollapse(IEnumerable>e){returne.SelectMany(x=>x);}该函数的作用是将一组IEnumerable>展平为一个IEnumerable。返回的数据将保留原始顺序。

c# - IEnumerable<T> 到 Dictionary<string, IEnumerable<T>> 使用 LINQ

拥有IEnumerableorders,如何获得Dictionary>使用Linq,其中键是Order.CustomerName映射到IEnumerable客户的订单。orders.ToDictionary(order=>order.CustomerName)不会立即生效,因为可能有多个订单具有相同的CustomerName。解决方案:orders.ToLookup(order=>order.CustomerName); 最佳答案 ILookup接口(interface)就是为此目的而设计的,它代表一个类似字典的结构,每个键包含许多

c# - 创建 IEnumerable<T>.Find()

我想写:IEnumerablecars;cars.Find(car=>car.Color=="Blue")我可以使用扩展方法来实现吗?以下失败是因为它递归调用自身而不是调用IList.Find()。publicstaticTFind(thisIEnumerablelist,Predicatematch){returnlist.ToList().Find(match);}谢谢! 最佳答案 这个方法已经存在。它叫做FirstOrDefaultcars.FirstOrDefault(car=>car.Color=="Blue");如果你自

c# - 使用 Newtonsoft Json.Net 反序列化为 IEnumerable 类

我有一个项目目前正在使用Json.Net来处理像这样的Json反序列化类:publicclassFoo{publicGuidFooGuid{get;set;}publicstringName{get;set;}publicListBars{get;set;}}publicclassBar{publicGuidBarGuid{get;set;}publicstringDescription{get;set;}}到目前为止一切正常。为了让迭代更简单,我做了Foo类(class)工具IEnumerable像这样:publicclassFoo:IEnumerable{publicGuidFoo

c# - IEnumerable Linq 方法是线程安全的吗?

我想知道Linq扩展方法是否是原子的?或者我是否需要在任何类型的迭代之前锁定跨线程使用的任何IEnumerable对象?将变量声明为volatile对此有任何影响吗?总而言之,以下哪项是最好的线程安全操作?1-没有任何锁:IEnumerable_objs=//...varfoo=_objs.FirstOrDefault(t=>//somecondition2-包括锁定语句:IEnumerable_objs=//...lock(_objs){varfoo=_objs.FirstOrDefault(t=>//somecondition}3-将变量声明为volatile:volatileIE

c# - EditorFor IEnumerable<T> 与 TemplateName

假设我有一个简单的模型来解释用途:publicclassCategory{...publicIEnumerableProducts{get;set;}}查看:@modelCategory...@Html.EditorFor(m=>m.Products)编辑器模板:@modelProduct...@Html.EditorFor(m=>m.Name)请注意,我不必为IEnumerable定义EditorTemplate,我只能为Product创建它模型和MVC框架足够聪明,可以使用自己的IEnumerable模板。它遍历我的集合并调用我的EditorTemplate。输出的html会是这样

c# - 为什么 Func<T> 与 Func<IEnumerable<T>> 不明确?

这个让我感到困惑,所以我想我会在这里问,希望C#专家能向我解释。为什么这段代码会产生错误?classProgram{staticvoidMain(string[]args){Foo(X);//theerrorisonthisline}staticStringX(){return"Test";}staticvoidFoo(Func>x){}staticvoidFoo(Funcx){}}有问题的错误:Error1Thecallisambiguousbetweenthefollowingmethodsorproperties:'ConsoleApplication1.Program.Foo(

c# - 断言 IEnumerables

由于我们公司不使用单元测试,所以我正在自学对自己的代码进行单元测试。我正在使用标准的.net测试框架进行一些非常基本的单元测试。我的一个方法返回一个IEnumerable我想测试它的输出。所以我创建了一个IEnumerable预计将对其进行测试。我以为我记得有一种方法可以Assert.ArePartsEqual或类似的东西,但我似乎找不到它。简而言之,我如何测试两个IEnumerable包含相同的字符串? 最佳答案 我不知道您指的是哪个“标准.net测试框架”,但如果它是VisualStudioTeamSystem单元测试内容,您可

c# - 既然有IEnumerator<T>,为什么还需要IEnumerable<T>?

免责声明:我了解IEnumerable之间的区别和IEnumerator以及如何使用两者。这不是this的副本或this.这更像是一个设计问题-因为IEnumerator已经封装了关于可以枚举的事物的所有必要信息(.Current,.MoveNext()),那么引入一个类型(IEnumerable)的唯一目的是返回前者的实例的意义何在?具体来说:为什么不能foreach被设计为直接遍历IEnumerator,像这样://foreach(vareinanEnumerator){//...}while(anEnumerator.MoveNext()){doSomething(anEnume