草庐IT

ienumerable

全部标签

c# - 展平 IEnumerable<IEnumerable<>>;理解泛型

我写了这个扩展方法(编译):publicstaticIEnumerableFlatten(thisIEnumerable@this)whereT:IEnumerable{foreach(Ttin@this)foreach(Jjint)yieldreturnj;}下面的代码导致编译时错误(没有找到合适的方法),为什么?:IEnumerable>foo=newint[2][];varbar=foo.Flatten();如果我像下面这样实现扩展,我不会得到编译时错误:publicstaticIEnumerableFlatten(thisIEnumerable>@this){foreach(I

c# - 展平 IEnumerable<IEnumerable<>>;理解泛型

我写了这个扩展方法(编译):publicstaticIEnumerableFlatten(thisIEnumerable@this)whereT:IEnumerable{foreach(Ttin@this)foreach(Jjint)yieldreturnj;}下面的代码导致编译时错误(没有找到合适的方法),为什么?:IEnumerable>foo=newint[2][];varbar=foo.Flatten();如果我像下面这样实现扩展,我不会得到编译时错误:publicstaticIEnumerableFlatten(thisIEnumerable>@this){foreach(I

c# - 查找数组中项目的所有组合的最佳方法是什么?

在C#中查找数组中所有项目组合的最佳方法是什么? 最佳答案 已更新这里有一组针对不同场景的通用函数(需要.net3.5或更高版本)。输出为{1,2,3,4}和长度为2的列表。重复排列staticIEnumerable>GetPermutationsWithRept(IEnumerablelist,intlength){if(length==1)returnlist.Select(t=>newT[]{t});returnGetPermutationsWithRept(list,length-1).SelectMany(t=>list,

c# - 查找数组中项目的所有组合的最佳方法是什么?

在C#中查找数组中所有项目组合的最佳方法是什么? 最佳答案 已更新这里有一组针对不同场景的通用函数(需要.net3.5或更高版本)。输出为{1,2,3,4}和长度为2的列表。重复排列staticIEnumerable>GetPermutationsWithRept(IEnumerablelist,intlength){if(length==1)returnlist.Select(t=>newT[]{t});returnGetPermutationsWithRept(list,length-1).SelectMany(t=>list,

c# - List、IList和IEnumerable的比较

我有一个C#应用程序,我在其中处理一些集合类型。我需要知道这些类型之间的区别是什么:ListIListIEnumerable每一个与其他的相比有什么区别? 最佳答案 IEnumerable是以下扩展或实现的基本接口(interface)。它不允许直接访问并且是只读的。因此,仅当您打算迭代集合时才使用它。ICollection延伸IEnumerable但此外还允许添加、删除、测试元素是否存在于集合中以及获取元素总数。它不允许通过索引直接访问元素。这将是一个复杂度为O(n)的操作,因为您需要开始对其进行迭代,直到找到相应的元素。ILis

c# - List、IList和IEnumerable的比较

我有一个C#应用程序,我在其中处理一些集合类型。我需要知道这些类型之间的区别是什么:ListIListIEnumerable每一个与其他的相比有什么区别? 最佳答案 IEnumerable是以下扩展或实现的基本接口(interface)。它不允许直接访问并且是只读的。因此,仅当您打算迭代集合时才使用它。ICollection延伸IEnumerable但此外还允许添加、删除、测试元素是否存在于集合中以及获取元素总数。它不允许通过索引直接访问元素。这将是一个复杂度为O(n)的操作,因为您需要开始对其进行迭代,直到找到相应的元素。ILis

c# - Assert.AreEqual 如何确定两个通用 IEnumerable 之间的相等性?

我有一个单元测试来检查方法是否返回正确的IEnumerable。该方法使用yieldreturn构建枚举。它是可枚举的类如下:enumTokenType{NUMBER,COMMAND,ARITHMETIC,}internalclassToken{publicTokenTypetype{get;set;}publicstringtext{get;set;}publicstaticbooloperator==(Tokenlh,Tokenrh){return(lh.type==rh.type)&&(lh.text==rh.text);}publicstaticbooloperator!=(T

c# - Assert.AreEqual 如何确定两个通用 IEnumerable 之间的相等性?

我有一个单元测试来检查方法是否返回正确的IEnumerable。该方法使用yieldreturn构建枚举。它是可枚举的类如下:enumTokenType{NUMBER,COMMAND,ARITHMETIC,}internalclassToken{publicTokenTypetype{get;set;}publicstringtext{get;set;}publicstaticbooloperator==(Tokenlh,Tokenrh){return(lh.type==rh.type)&&(lh.text==rh.text);}publicstaticbooloperator!=(T

c# - 为什么 Controls 集合不提供所有 IEnumerable 方法?

我不确定ASP.Net的ControlCollection是如何工作的,所以也许有人可以为我阐明这一点。我最近发现了扩展方法和Linq的魔力。好吧,我很伤心地发现这不是有效的语法varc=Controls.Where(x=>x.ID=="SomeID").SingleOrDefault();但是据我所知,Controls确实实现了提供此类方法的IEnumerable接口(interface),那又如何呢?为什么这不起作用?我至少找到了解决此问题的体面工作:varlist=(IEnumerable)Controls;varthis_item=list.Where(x=>x.ID=="So

c# - 为什么 Controls 集合不提供所有 IEnumerable 方法?

我不确定ASP.Net的ControlCollection是如何工作的,所以也许有人可以为我阐明这一点。我最近发现了扩展方法和Linq的魔力。好吧,我很伤心地发现这不是有效的语法varc=Controls.Where(x=>x.ID=="SomeID").SingleOrDefault();但是据我所知,Controls确实实现了提供此类方法的IEnumerable接口(interface),那又如何呢?为什么这不起作用?我至少找到了解决此问题的体面工作:varlist=(IEnumerable)Controls;varthis_item=list.Where(x=>x.ID=="So