2010-12-16 65 views

回答

7

不幸的是你不能使用的东西,它实现仅IEnumerable的LINQ扩展方法。但是,您可以使用.Cast<object>()将其变为IEnumerable<object>,然后使用以下方法。下面假设collectionIEnumerable<T>类型的一些T

要访问的第一个元素,并抛出一个异常,如果是没有的:

collection.First() 

要访问的第一个元素,并得到,如果该类型缺省值也没有了:

collection.FirstOrDefault() 

类型的默认值是null引用类型(声明为class类型,例如string,Stream,Bitmap等)和值类型(声明为structenum的类型,例如int,boolDateTime等)的“零值”。

要仅找出是否有一个第一元件在所有:

collection.Any() 

所有这三个可以采取一个lambda表达式作为条件,例如.First(x => x.Name == "x"),相当于.Where(x => x.Name == "x").First()

+0

我没有找到这些方法。我的对象只实现IEnumable接口。 – user496949 2010-12-16 01:28:41

+0

顺便说一句,我正在使用.NET Framework 3.5 – user496949 2010-12-16 01:29:00

+0

请问你能为第一句话显示任何参考吗? ('不幸的是,你不能在仅实现IEnumerable的东西上使用LINQ扩展方法)。我从MSDN页面复制了我的示例,它只是使用int数组...谢谢! – Lorenzo 2010-12-16 01:36:43

4

使用FirstOrDefault方法

using System.Linq; 

int[] numbers = { }; 
int first = numbers.FirstOrDefault(); 
相关问题