ビデオ: C# Tutorial 15 LINQ Tutorial 2024
By John Paul Mueller
言語INTEgrated Query(LINQ)はの機能です。マイクロソフトのものを超えてあなたの把握を広げるNET Framework。 LINQを使用すると、基本的な演算子といくつかの追加のクエリ演算子を知ることで、何かをクエリすることができます。途中で紛失してしまった場合、マイクロソフトはネットワーク、ブログ、フォーラムを通して豊富なリソースを提供しています。
必須LINQ演算子
<! - 1 - >言語INTEgrated Query(LINQ)は、すばらしい演算子配列を使用します。 演算子 は、2つの値が等しいかどうかのチェックなど、実行するクエリの種類をLINQに伝える特別な単語です。演算子は数百に達することができますが、ほとんどの場合、わずかな標準演算子を使用して大部分のタスクを実行します。以下は、必須のLINQ演算子の一覧です。
演算子 | 説明 |
---|---|
から | クエリの実行に使用される一時オブジェクトを定義します。
この演算子は個々の要素オブジェクトを定義していると考えてください。 このクエリから他のすべてのデータを派生させます。たとえば、一時変数に基づいて、 出力に表示されるデータとそのデータの順序付け方法 を選択します。 from 演算子は、作成するすべてのクエリに表示される唯一の演算子です。 in |
データを取得するために使用されるデータソースを定義します。データソース | は、データプロバイダによってサポートされる任意のオブジェクトとすることができる。プロバイダ
は、データソースとLINQクエリとの間の接続を作成します。 たとえば、データソースには、リスト ボックス、XMLファイル、SQL Serverテーブル、Active Directory、Web サービスなどのオブジェクトや、 情報を収集する。 LINQクエリを使用して ハードドライブ上のファイルを直接操作することも可能です。クエリには、クエリで使用される データソースを完全に記述するために必要な、from演算子とin演算子の一致する ペアが含まれます。 select |
クエリの出力情報を選択します。最も単純な | 出力は、from演算子を使用して定義した同じオブジェクトです。しかし、選択演算子は、計算値、データ配列、または個々のオブジェクト特性を含むことができる。ほとんどの場合、制限要因はLINQ
プロバイダが提供する機能です。 4つのデフォルトプロバイダにはすべて、 の範囲の選択オペレータビヘイビアが含まれています。 クエリには1つの選択演算子 しか含まれておらず、この演算子は クエリの最後の演算子として指定する必要があります。 要素が出力の一部として表示される条件を記述します。where演算子は常に出力条件を定義するためにブール引数を必要とします。あなたは |
が出力基準を完全に記述するために必要な数のオペレータを含むことができます。 LINQは | を演算子のどこにクエリが現れる順序で解釈するので、順序が重要です。クエリ
が予期したとおりに動作しない場合は、出力演算子の順序を変更して、出力の要件をよりよく説明するようにしてください。デバッガを使用して、オペレータの論理的な流れでエラーを見つけるのを助けます。 orderby 出力要素が表示される順序を定義します。 最も単純なorderby演算子は、from 演算子を使用して定義した オブジェクトに依存します。しかし、orderby演算子 は、通常、数値、アルファベット、シンボル、またはバイナリのような、論理順序付け引数 を入力として定義する文をすべて受け入れることができます。 データの出力順を完全に記述するのに必要な |
ように、多くのorderby演算子を使用できます。 | whereオペレータの場合と同様に、LINQはorderby演算子をクエリに現れる順序で解釈します。したがって、orderby演算子の順序は重要です。
join and on 2つ以上のデータソースを結合して、データの複合ビューを作成します。データソースは、同じプロバイダーに依存する必要はありません。 は、 クエリに使用されるすべてのデータソースを完全に記述するのに必要な ような数の結合演算子を使用できます。 on演算子は、2つのデータソースを結合するために使用される 基準を定義します。完全なデータソースを作成するには、結合と演算子 をペアにします。 let クエリ内で使用する計算値を作成します。計算された |
の値により、複雑なクエリを簡単に作成できます。さらに、 | は、計算された値を呼び出し元に渡して、追加の
出力情報を提供することもできます。多くの場合、let演算子は、LINQが命名の競合のために通常渡さないデータを渡す手段を提供します。あなたは が必要なだけ多くの演算子を使って完全なクエリ機能を提供することができますが、計算された 値がクエリ速度を向上させる場合には の使用を制限するべきです。 <! LINQ標準クエリ演算子グループの探索 標準クエリ演算子を使用すると、言語INTEgrated Query(LINQ)の処理がかなり簡単になります。多くの意味で、単純なクエリ演算子ですでに作業している可能性があります。たとえば、orderbyキーワードを使用すると、標準クエリ演算子のソートグループでクエリ演算子を使用しています。 whereキーワードを使用すると、別のクエリ演算子を使用していますが、今回はフィルタリンググループに含まれています。 |
<! - 3 - > | 標準的なクエリ演算子グループの一覧と追加情報がある場所を次に示します。
グループ グループ説明 含まれる演算子 追加情報 集計演算 集計演算子はすべて、データソースで数学的な作業を実行するのに役立ちます。 集計演算 連結演算 |
シーケンスを結合することができます。
Concat
Microsoftデベロッパーネットワーク:連結操作
データ型の変換 | データ型の変換には遅延型と非固定型の2種類があります。遅延変換演算子は、コードが結果セット | を解釈するときに、クエリの結果 | を特定のタイプに変換します。不承認の変換演算子は、 |
---|---|---|---|
クエリの出力を特定の型に変更します。 | AsEnumerable、AsQueryable、Cast、
OfType、ToArray、ToDictionary、ToList、およびToLookup |
Microsoft | 開発者ネットワーク:データ型の変換
要素操作 |
要素などの識別情報 | がわからなくても、
シーケンス内の特定の要素を選択します。 |
ElementAt、ElementAtOrDefault、FirstOrDefault、Last、 | LastOrDefault、Single、およびSingleOrDefault
Microsoft |
開発者ネットワーク:要素操作 | 等価操作
唯一の等価演算子は、 2つの999のシーケンスは等しい(要素の数および各要素の内容は等しい)。 SequenceEqual Microsoft 開発者ネットワーク:等価操作 |
データのフィルタリング
フィルタ演算子を使用すると、特定の条件に基づいてシーケンス内の要素を除外または含めることができます。 OfTypeとWhere |
Microsoft
開発者ネットワーク:データのフィルタリング |
生成操作 | 生成演算子は、指定した
条件に基づいて新しいシーケンスを作成します。 DefaultIfEmpty、Empty、Rangeおよび |
Repeat
Microsoft |
開発者ネットワーク:生成操作
データのグループ化 |
グループ化演算子を使用すると、特定の |
文字列のグループの最初の文字として使用します。 GroupByとToLookup |
Microsoft | 開発者ネットワーク:データのグループ化
結合操作 |
結合演算子は2つ以上のシーケンスを入力として受け入れ、特定の結合に基づいて1つの出力シーケンスを作成します結合条件を入力してください。 | Join and GroupJoin
Microsoft |
開発者ネットワーク:結合操作 | データのパーティション化
パーティション演算子を使用すると、シーケンスをセクション化して |
特定の情報を見つけることができます。 | スキップ、SkipWhile、Take、および
TakeWhile |
Microsoft
開発者ネットワーク:データのパーティショニング |
投影操作
投影演算子は、作成したクエリ |
。 | Select and SelectMany
Microsoft 開発者ネットワーク:投影操作 |
定量演算 | 定量演算子は、
特定の基準に基づいて要素を選択するのに役立ちます。これらの演算子を使用して、 |
なし、1つまたは複数の要素が選択された | 条件を満たすかどうかを判断します。
すべて、任意、 および |
マイクロソフト | 開発者ネットワーク:数量演算
集合演算 |
集合演算子は集合を作成する。あなたは学校で演奏された算数を思い出してください | 。
データのソート |
並べ替え演算子を使用すると、シーケンスを特定の
順に並べ替えることができます。 |
マイクロソフトの
開発者ネットワーク:データの並べ替え |
Microsoft LINQリソース | 追加情報やツール、拡張機能の入手先を知ることはいつでも役立ちます言語インテグレートクエリ(LINQ)アプリケーションを作成するときに使用します。ここでは、LINQに役立つマイクロソフトのリソースの一覧を示します。
Microsoft Developer Network |
Microsoft Developer Network(MSDN)は、常にすべてのMicrosoft開発製品のベースラインマテリアルを提供しています。あなたはそこに情報の完全な倉庫を見つけるでしょう - 一人の人間がおそらく一生読むことができる以上に。したがって、情報を慎重に調べる必要があります。そうしないとMSDNの迷路ですぐに失われてしまいます。 LINQを使用するための主なMSDNサイトでは、ニュース、リソース、およびサンプルなどの他の情報へのアクセスを提供しています。 | マイクロソフトのブログ
Microsoftは、LINQの使い方を知りたがっています。過去には、必要な情報の多くをMSDNで見つけることができました。 MSDNのWebサイトはまだまだ良い場所ですが、多くのMicrosoft開発者は、あまりにも正式ではない(いくつかのケースでは記事がかなり理解しにくい)と不満を持ち、著者と対話する機会はありませんでした。マイクロソフトのブログは、実際に著者に対応できる情報を得るための友好的な環境を提供しています。 |
Beth Massi:Visual Basic(VB)の良さを分かち合う | Charlie Calvertのコミュニティブログ
Wriju's BLOG:LINQで働くときに訪れたいブログがいくつかあります。 NETとEverything これらのブログのほとんどは一般的なものであり、何らかのプログラミング問題について議論しています。その結果、各ブログにトピックが混在しています。著者は1つの投稿でファイルシステムを、別の投稿ではLINQについて議論するかもしれません。それぞれには、ブログの検索機能を使用して検索できるLINQ固有のエントリがあります。 Charlie CalvertはMicrosoftを辞めたが、彼のブログには豊富な一般的なLINQ情報が含まれている。 マイクロソフトのフォーラム |
ブログを通じてマイクロソフトとのやりとりが十分に行われていないと思われる場合は、マイクロソフトの社員もしばしばマイクロソフトのフォーラムを頻繁に利用します。正しいフォーラムにメッセージをアップロードすると、専門家の助けや、他のフォーラムメンバーからの知識豊富な助けを得ることができます。ほとんどの開発者は、LINQに関する基本的な質問についてはMSDNフォーラムを利用しています。 Microsoftコミュニティでは、一般的なフォーラムの一覧を見ることができます。 Visual Basicの言語固有のフォーラムをお試しください。ネット。
|