元素運算符從序列(集合)中返回特定元素。
下表列出了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。