LINQ元素操作符


除了DefaultIfEmpty,其餘八種標準查詢元素運算子從集合返回單個元素。

檢視範例

操作 描述 C#查詢表示式語法 VB查詢表示式語法
ElementAt 返回一個特定的索引中的一個元素存在於一個集合 不適用 不適用
ElementAtOrDefault 相同於ElementAt,它也將返回預設值,特定索引超出範圍返回預設值 不適用 不適用
First 檢索的集合或第一元件滿足特定的條件中的第一個元素 不適用 不適用
FirstOrDefault 相同First除了返回一個預設值沒有存在這樣的元素 不適用 不適用
Last 檢索最後一個出現在集合或最後一個元素的元素滿足特定條件 不適用 不適用
LastOrDefault 相同Last除了返回一個預設值沒有存在任何這樣的元素 不適用 不適用
Single 返回集合的唯一元素或唯一元素滿足一定條件 不適用 不適用
SingleOrDefault 相同單除了它也返回一個預設值,如果沒有存在任何這樣的唯一元素 不適用 不適用
DefaultIfEmpty 返回預設值,如果集合或列表為空或null 不適用 不適用

ElementAt範例- Enumerable.ElementAt方法

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Operators
{
  class Program
  {
     static void Main(string[] args)
     {
        string[] names =
              { "Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", 
                "Hedlund, Magnus", "Ito, Shu" };
        Random random = new Random(DateTime.Now.Millisecond);

        string name = names.ElementAt(random.Next(0, names.Length));

        Console.WriteLine("The name chosen at random is '{0}'.", name);
        Console.ReadLine();
     }
  }
}

VB

Module Module1
  Sub Main()
     Dim names() As String = _
           {"Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}

     Dim random As Random = New Random(DateTime.Now.Millisecond)

     Dim name As String = names.ElementAt(random.Next(0, names.Length))

     MsgBox("The name chosen at random is " & name)
  End Sub
End Module

當C#或VB的上述程式碼被編譯和執行時,它產生了以下結果:

The name chosen at random is Ito, Shu

註: - 在這裡,上面的輸出會動態變化和名稱會被隨機選擇。

First範例- Enumerable.First方法

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Operators
{
  class Program
  {
     static void Main(string[] args)
     {
        int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54, 
                          83, 23, 87, 435, 67, 12, 19 };

        int first = numbers.First();

        Console.WriteLine(first);
        Console.ReadLine();
     }
  }
}

VB

Module Module1
  Sub Main()
     Dim numbers() As Integer = _
              {9, 34, 65, 92, 87, 435, 3, 54, 83, 23, 87, 435, 67, 12, 19}
      
     Dim first As Integer = numbers.First()

     MsgBox(first)
  End Sub
End Module

當C#或VB的上述程式碼被編譯和執行時,它產生了以下結果:

9

Last例子- Enumerable.Last方法

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Operators
{
  class Program
  {
     static void Main(string[] args)
     {
        int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54, 
                          83, 23, 87, 435, 67, 12, 19 };

        int last = numbers.Last();

        Console.WriteLine(last);
        Console.ReadLine();
     }
  }
}

VB

Module Module1
  Sub Main()
     Dim numbers() As Integer = _
              {9, 34, 65, 92, 87, 435, 3, 54, 83, 23, 87, 435, 67, 12, 19}
      
     Dim last As Integer = numbers.Last()

     MsgBox(last)
  End Sub
End Module

當C#或VB的上述程式碼被編譯和執行時,它產生了以下結果:

19