English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

LINQ API(.Net)

IEnumerable<T>またはIQueryable<T>インターフェースを実装するクラスに対してLINQクエリを書くことができます。System.Linqの名前空間には、LINQクエリに必要な以下のクラスとインターフェースが含まれています。

LINQ API
 Visual Studioで新しいクラスを追加する際には、デフォルトでSystem.Linq名前空間が含まれています。

LINQクエリはIEnumerableまたはIQueryableインターフェースを実装するクラスに対して拡張メソッドを使用します。EnumerableとQueryableは、LINQクエリを書くための拡張メソッドを含む2つの静的クラスです。

可列クラス(Enumerable)

Enumerableクラスには、IEnumerable<T>インターフェースを実装するクラスのための拡張メソッドが含まれています。例えば、すべての組み込みコレクションクラスはIEnumerable<T>インターフェースを実装しているため、リンクリクエストを使用して組み込みコレクションからデータを取得することができます。

以下の図は、Enumerableクラスに含まれる拡張メソッドを示しています。これらのメソッドはC#またはVB.Netの汎用コレクションと一緒に使用できます。

以下の図は、Enumerable クラスで利用できるすべての拡張メソッドを示しています。

Enumerable クラス

可クエリ(Queryable)

Queryable クラスには、IQueryable <T> インターフェースを実現するクラスの拡張メソッドが含まれています。IQueryable<T> インターフェースは、特定のデータタイプの特定のデータソースに対するクエリ機能を提供するために使用されます。例えば、Entity Framework apiは、LINQクエリをサポートする底層データベース(例:MS SQL Server)に対してIQueryable<T>を実現しています。

また、サードパーティデータにアクセスするためのAPIもあります。例えば、LINQ to Amazonは、LINQとAmazon Webサービスを組み合わせて書籍や他のアイテムを検索する機能を提供します。これは、Amazon向けのIQueryableインターフェースを実現するために使用されます。

以下の図は、Queryable クラスで利用できる拡張メソッドを示しており、さまざまなネイティブまたはサードパーティデータプロバイダーと一緒に使用できます。

以下の図は、Queryable クラスで利用できる拡張メソッドを示しています。

Queryable クラス

  覚えておくべきポイント

  1. LINQ を使用するには、System.LINQ ナームスペースを使用します。

  2. LINQ apiには、主に静的クラス Enumerable と Queryable が含まれています。

  3. 静的 Enumerable クラスには、IEnumerable <T> インターフェースを実現するクラスの拡張メソッドが含まれています。

  4. IEnumerable <T> コレクションの型は、List、Dictionary、SortedList、Queue、HashSet、LinkedListなどのメモリ内のコレクションです。

  5. 静的 Queryable クラスには、IQueryable <T> インターフェースを実現するクラスの拡張メソッドが含まれています。

  6. リモートクエリプロバイダーは、例えば Linq などの機能を実現しています。-to-SQL、LINQ-to-Amazonなど。