Linq-concatenation

提供:Dev Guides
移動先:案内検索

LINQでの連結

2つのシーケンスの連結を実行します。これは、重複を削除しないという事実を除いて、操作に関してはUnion演算子に非常に似ています。

Operator Description C# Query Expression Syntax VB Query Expression Syntax
Concat Two sequences are concatenated for the formation of a single one sequence. Not Applicable Not Applicable

Concatの例-Enumerable.Concat(Of 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.