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.