LINQ 元素運算符 ElementAt,ElementAtOrDefault

元素運算符從序列(集合)中返回特定元素。

下表列出了LINQ中的所有Element運算符。

元素運算符(方法)描述
ElementAt返回集合中指定索引處的元素
ElementAtOrDefault返回集合中指定索引處的元素;如果索引超出范圍,則返回默認值。
First返回集合的第一個元素,或滿足條件的第一個元素。
FirstOrDefault返回集合的第一個元素,或滿足條件的第一個元素。如果索引超出范圍,則返回默認值。
Last返回集合的最后一個元素,或滿足條件的最后一個元素
LastOrDefault返回集合的最后一個元素,或滿足條件的最后一個元素。如果不存在這樣的元素,則返回默認值。
Single返回集合中的唯一元素,或唯一滿足條件的元素。
SingleOrDefault返回集合中的唯一元素,或唯一滿足條件的元素。如果不存在這樣的元素,或者該集合不完全包含一個元素,則返回默認值。

ElementAt()方法從給定集合返回指定索引中的元素。如果指定的索引超出集合的范圍,則它將拋出“索引超出范圍(Index out of range exception)”異常。請注意,索引是從零開始的索引。

ElementAtOrDefault()方法還從協(xié)作中返回指定索引中的元素,如果指定索引不在集合的范圍內(nèi),則它將返回數(shù)據(jù)類型的默認值,而不是引發(fā)錯誤。

下面的示例演示原始集合上的ElementAt和ElementAtOrDefault方法。

IList<int> intList = new List<int>() { 10, 21, 30, 45, 50, 87 };
IList<string> strList = new List<string>() { "One", "Two", null, "Four", "Five" };

Console.WriteLine("intList中的第一個元素: {0}", intList.ElementAt(0));
Console.WriteLine("strList中的第一個元素: {0}", strList.ElementAt(0));
		
Console.WriteLine("intList中的第二個元素: {0}", intList.ElementAt(1));
Console.WriteLine("strList中的第二個元素: {0}", strList.ElementAt(1));
		
Console.WriteLine("intList中的第三個元素: {0}", intList.ElementAtOrDefault(2));
Console.WriteLine("strList中的第三個元素: {0}", strList.ElementAtOrDefault(2));

Console.WriteLine("intList中的第10個元素: {0} - 默認int值", 
                intList.ElementAtOrDefault(9));		
Console.WriteLine("strList中的第十個元素: {0} - 默認字符串值(null)",
                 strList.ElementAtOrDefault(9));		
		
		
Console.WriteLine("intList. ElementAt (9)拋出異常: 索引超出范圍");
Console.WriteLine("-------------------------------------------------------------");
Console.WriteLine(intList.ElementAt(9));
輸出:
intList中的第一個元素:10 
strList中的第一個元素:
intList中的第二元素:21 
strList中的第二個元素:   
intList中的第三個元素:30 
strList中的第三個元素:

intList中的第十個元素:0 - 默認int值
strList中的第十個元素:- 默認字符串值(null)
----------------------------- --------------------------------
intList. ElementAt (9)拋出異常: 索引超出范圍

正如您在上面示例中所看到的那樣,intList.ElementAtOrDefault(9)返回0(默認值為int),因為intList不包含第十元素。 然而,intList.ElementAt(9)以相同的方式拋出“索引超出范圍”,(9)返回null,它是字符串類型的默認值。 (控制臺顯示空白空間,因為它不能顯示空)

因此,建議使用 ElementAtOrDefault 擴展方法來消除運行時異常的可能性。

在下一節(jié)中,將了解另一個元素運算符First和FirstOrDefault。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清