LINQ級聯



進行兩個序列的串聯,是比較相似聯合操作在其操作,但這不會刪除重複記錄。

操作 描述 C#查詢表示式語法 VB查詢表示式語法
Concat 兩個序列被連線為一個單一的一個序列的形成。 不適用 不適用

Concat例子 - Enumerable.Concat(Tsource)方法

C#

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

namespace Operators
{
  class Concat
  {
     static void Main(string[] args)
     {
        Pet[] cats = GetCats();
        Pet[] dogs = GetDogs();

        IEnumerable<string> query = cats.Select(cat => cat.Name).Concat(dogs.Select(dog => dog.Name));

        foreach (var e in query)
        {
           Console.WriteLine("Name = {0} ", e);
        }

        Console.WriteLine("\nPress any key to continue.");
        Console.ReadKey();
     }

     static Pet[] GetCats()
     {
        Pet[] cats = { new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 } };
                     return cats;
     }

     static Pet[] GetDogs()
     {
        Pet[] dogs = { new Pet { Name="Bounder", Age=3 },
                       new Pet { Name="Snoopy", Age=14 },
                       new Pet { Name="Fido", Age=9 } };
                     return dogs;
     }
  }

  class Pet
  {
     public string Name { get; set; }
     public int Age { get; set; }
  }
}

VB

Module Module1

  Sub Main()

     Dim cats As List(Of Pet) = GetCats()
     Dim dogs As List(Of Pet) = GetDogs()

     Dim list = cats.Cast(Of Pet)().Concat(dogs.Cast(Of Pet)()).ToList()

     For Each e In list
        Console.WriteLine("Name = {0}", e.Name)
     Next

     Console.WriteLine(vbLf & "Press any key to continue.")
     Console.ReadKey()
  End Sub

  Function GetCats() As List(Of Pet)

     Dim cats As New List(Of Pet)

        cats.Add(New Pet With {.Name = "Barley", .Age = 8})
        cats.Add(New Pet With {.Name = "Boots", .Age = 4})
        cats.Add(New Pet With {.Name = "Whiskers", .Age = 1})

        Return cats
  End Function

  Function GetDogs() As List(Of Pet)

     Dim dogs As New List(Of Pet)

        dogs.Add(New Pet With {.Name = "Bounder", .Age = 3})
        dogs.Add(New Pet With {.Name = "Snoopy", .Age = 14})
        dogs.Add(New Pet With {.Name = "Fido", .Age = 9})

        Return dogs
  End Function

  Class Pet
     Public Property Name As String
     Public Property Age As Integer
  End Class
End Module

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

Barley 
Boots 
Whiskers 
Bounder 
Snoopy 
Fido

Press any key to continue.