草庐IT

IEnumerable

全部标签

c# - 将收到的对象转换为 List<object> 或 IEnumerable<object>

我正在尝试执行以下转换privatevoidMyMethod(objectmyObject){if(myObjectisIEnumerable){Listcollection=(List)myObject;...dosomething}else{...dosomething}}但我总是以以下异常结束:无法将“System.Collections.Generic.List1[MySpecificType]”类型的对象转换为类型“System.Collections.Generic.List1[System.Object]”我真的需要它来工作,因为这个方法需要非常通用才能接收未指定类型的单

c# - 为什么 C# 编译器允许在 IEnumerable<T> 和 TAlmostAnything 之间进行显式转换?

如您所料,以下代码会出现编译错误:ListaBunchOfBananas=newList();BananajustOneBanana=(Banana)aBunchOfBananas;但是,当使用IEnumerable时,您只会收到运行时错误。IEnumerableaBunchOfBananas=newList();BananajustOneBanana=(Banana)aBunchOfBananas;为什么C#编译器允许这样做? 最佳答案 我想这是因为IEnumerable是一个接口(interface),其中某些实现可以显式转换为

c# - 为什么 C# 编译器允许在 IEnumerable<T> 和 TAlmostAnything 之间进行显式转换?

如您所料,以下代码会出现编译错误:ListaBunchOfBananas=newList();BananajustOneBanana=(Banana)aBunchOfBananas;但是,当使用IEnumerable时,您只会收到运行时错误。IEnumerableaBunchOfBananas=newList();BananajustOneBanana=(Banana)aBunchOfBananas;为什么C#编译器允许这样做? 最佳答案 我想这是因为IEnumerable是一个接口(interface),其中某些实现可以显式转换为

c# - 协方差和向上转型之间的区别

协方差和向上转型之间有什么区别,或者更具体地说,为什么它们有不同的名称?我见过以下称为“向上转换”的示例:strings="hello";objecto=s;//upcastto'string'to'object'然而,我看到以下称为“协方差”:string[]s=newstring[100];object[]o=s;IEnumerableies=newList();IEnumerableieo=ies;现在,在我未经训练的眼中,协方差似乎与向上转换相同,只是它指的是集合的转换。(关于逆变和向下转型,可以做出类似的陈述)。真的有那么简单吗? 最佳答案

c# - 协方差和向上转型之间的区别

协方差和向上转型之间有什么区别,或者更具体地说,为什么它们有不同的名称?我见过以下称为“向上转换”的示例:strings="hello";objecto=s;//upcastto'string'to'object'然而,我看到以下称为“协方差”:string[]s=newstring[100];object[]o=s;IEnumerableies=newList();IEnumerableieo=ies;现在,在我未经训练的眼中,协方差似乎与向上转换相同,只是它指的是集合的转换。(关于逆变和向下转型,可以做出类似的陈述)。真的有那么简单吗? 最佳答案

c# - 将 DataRowCollection 转换为 IEnumerable<T>

我想在.NET3.5中做这样的事情。什么是最快的方法?IEnumerablecollection=TypedDataSet.TypedTableBase.RowsasIEnumerable; 最佳答案 您可以调用OfType()在DataRowCollection上. 关于c#-将DataRowCollection转换为IEnumerable,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

c# - 将 DataRowCollection 转换为 IEnumerable<T>

我想在.NET3.5中做这样的事情。什么是最快的方法?IEnumerablecollection=TypedDataSet.TypedTableBase.RowsasIEnumerable; 最佳答案 您可以调用OfType()在DataRowCollection上. 关于c#-将DataRowCollection转换为IEnumerable,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

c# - IQueryable、List、IEnumerator 之间的区别?

我想知道IQueryable、List、IEnumerator之间的区别是什么以及我应该何时使用它们?例如,当使用LinqtoSQL时,我会做这样的事情:publicListGetUsers(){returndb.User.where(/*somequeryhere*/).ToList();}现在我想知道是否应该使用IQueryable代替。我不确定在列表中使用它的优势。 最佳答案 IQueryable旨在允许查询提供程序(例如,像LINQtoSQL或EntityFramework这样的ORM)使用查询中包含的表达式将请求转换为另一

c# - IQueryable、List、IEnumerator 之间的区别?

我想知道IQueryable、List、IEnumerator之间的区别是什么以及我应该何时使用它们?例如,当使用LinqtoSQL时,我会做这样的事情:publicListGetUsers(){returndb.User.where(/*somequeryhere*/).ToList();}现在我想知道是否应该使用IQueryable代替。我不确定在列表中使用它的优势。 最佳答案 IQueryable旨在允许查询提供程序(例如,像LINQtoSQL或EntityFramework这样的ORM)使用查询中包含的表达式将请求转换为另一

c# - 跨两个列表应用运算符的 C# 惯用方法是什么?

我习惯这样做(来自其他语言):a=1,2,3;b=5,1,2;c=a*b;//c=5,2,6这需要两个大小相等的列表,并将一个函数应用于它们的成员,一次一个,以获得结果列表。它可以是像乘法一样简单的函数(如上)或更复杂的函数:c=b>a?b-a:0;//c=4,0,0我可以想到几种不同的方法在C#中执行此操作,但我不确定受过C#培训的程序员会如何执行此操作。在C#世界中处理此问题的正确方法是什么?(我唯一要问的部分是在哪里c=f(a,b)。我熟悉创建列表和访问他们的列表元素。) 最佳答案 varc=a.Zip(b,(x,y)=>x*