Linq-objects

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

LINQ-オブジェクト

LINQ to Objectsは、LINQ to SQLまたはLINQ to XMLの場合のように、LINQプロバイダー(API)を必要とせずにインメモリデータコレクションにアクセスするためのIEnumerable <T>をサポートするLINQクエリの使用を提供します。

オブジェクトへのLINQの紹介

LINQ to Objectsのクエリは、通常IEnumerable <T>型の変数のみを返します。 要するに、LINQ to Objectsは、以前のようにコレクションに新しいアプローチを提供します。コレクションからデータを取得するための長いコーディング(非常に複雑な各ループ)を書くことが不可欠でした。取得する必要があります。

また、LINQ to Objectsには、読みやすさ、強力なフィルタリング、グループ化機能、最小限のアプリケーションコーディングでの強化された順序付けなど、従来のforeachループよりも多くの利点があります。 このようなLINQクエリは本質的にコンパクトであり、変更を加えずに、または少し変更するだけで、他のデータソースに移植できます。

以下はオブジェクトの簡単なLINQの例です-

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

namespace LINQtoObjects {
   class Program {
      static void Main(string[] args) {

         string[] tools = { "Tablesaw", "Bandsaw", "Planer", "Jointer", "Drill", "Sander" };
         var list = from t in tools select t;

         StringBuilder sb = new StringBuilder();

         foreach (string s in list) {
            sb.Append(s + Environment.NewLine);
         }

         Console.WriteLine(sb.ToString(), "Tools");
         Console.ReadLine();
      }
   }
}

この例では、文字列の配列(ツール)が、LINQ to Objectsを使用してクエリされるオブジェクトのコレクションとして使用されます。

Objects query is:
var list = from t in tools select t;

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Tablesaw
Bandsaw
Planer
Jointer
Drill
Sander

LINQ to Objectsを使用したメモリコレクションでのクエリ

C#

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

namespace LINQtoObjects {
   class Department {
      public int DepartmentId { get; set; }
      public string Name { get; set; }
   }

   class LinqToObjects {
      static void Main(string[] args) {

         List<Department> departments = new List<Department>();

         departments.Add(new Department { DepartmentId = 1, Name = "Account" });
         departments.Add(new Department { DepartmentId = 2, Name = "Sales" });
         departments.Add(new Department { DepartmentId = 3, Name = "Marketing" });

         var departmentList = from d in departments
                              select d;

         foreach (var dept in departmentList) {
            Console.WriteLine("Department Id = {0} , Department Name = {1}",
               dept.DepartmentId, dept.Name);
         }

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

VB

Imports System.Collections.Generic
Imports System.Linq

Module Module1

   Sub Main(ByVal args As String())

      Dim account As New Department With {.Name = "Account", .DepartmentId = 1}
      Dim sales As New Department With {.Name = "Sales", .DepartmentId = 2}
      Dim marketing As New Department With {.Name = "Marketing", .DepartmentId = 3}

      Dim departments As New System.Collections.Generic.List(Of Department)(New Department() {account, sales, marketing})

      Dim departmentList = From d In departments

      For Each dept In departmentList
         Console.WriteLine("Department Id = {0} , Department Name = {1}", dept.DepartmentId, dept.Name)
      Next

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

   Class Department
      Public Property Name As String
      Public Property DepartmentId As Integer
   End Class

End Module

上記のC#またはVBのコードをコンパイルして実行すると、次の結果が生成されます-

Department Id = 1, Department Name = Account
Department Id = 2, Department Name = Sales
Department Id = 3, Department Name = Marketing

Press any key to continue.