LINQ-クエリ演算子
クエリパターンを形成する拡張メソッドのセットは、LINQ標準クエリ演算子として知られています。LINQクエリ式の構成要素として、これらの演算子は、フィルタリング、並べ替え、射影、集計などのさまざまなクエリ機能を提供します。
LINQ標準クエリ演算子は、その機能に基づいて次のように分類できます。
- フィルタリング演算子
- オペレーターに参加する
- 投影操作
- ソート演算子
- グループ化演算子
- Conversions
- Concatenation
- Aggregation
- 定量化操作
- パーティション操作
- 発電操作
- セット操作
- Equality
- 要素演算子
フィルタリング演算子
フィルタリングは、特定の条件を満たす要素のみが選択されるように結果セットを制限する操作です。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
どこ | 述語関数に基づいて値をフィルタリングする | どこ | どこ |
OfType | 指定されたタイプとしての能力に基づいて値をフィルタリングします | 適用できません | 適用できません |
オペレーターに参加する
結合とは、直接的な関係をたどることが難しいデータソースを対象とする操作を指します。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
参加する | オペレーターは、一致するキーに基づいて2つのシーケンスを結合します | 参加する…で…で…等しい… | x In…、yIn…からxa = ya |
GroupJoin | 2つのシーケンスを結合し、一致する要素をグループ化します | 参加する…で…に…等しい…に… | グループ参加…で…で… |
投影操作
投影は、オブジェクトが特定のプロパティのみを持つまったく新しい形式に変換される操作です。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
選択する | 演算子は、変換関数に基づいて値を投影します | 選択する | 選択する |
SelectMany | 演算子は、変換関数に基づく値のシーケンスを投影し、それらを単一のシーケンスに平坦化します | 複数のfrom句を使用する | 複数のFrom句を使用する |
ソート演算子
並べ替え操作では、1つ以上の属性に基づいてシーケンスの要素を並べ替えることができます。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
OrderBy | 演算子は値を昇順でソートします | orderby | 注文者 |
OrderByDescending | 演算子は値を降順でソートします | orderby ...降順 | 並べ替え...降順 |
ThenBy | 昇順で2次ソートを実行します | orderby…、… | 注文者…、… |
ThenByDescending | 降順で2次ソートを実行します | orderby…、…降順 | 並べ替え…、…降順 |
逆行する | コレクション内の要素の順序を逆にします | 適用できません | 適用できません |
グループ化演算子
オペレーターは、共通の共有属性に基づいてデータをいくつかのグループに入れます。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
GroupBy | アイテムのシーケンスをグループに編成し、タイプIGrouping <key、element>のIEnumerableコレクションとして返します。 | group…by-or-group…by…into… | Group…By…Into… |
見上げる | キーペアのシーケンスが返されるグループ化操作を実行します | 適用できません | 適用できません |
変換
演算子は入力オブジェクトのタイプを変更し、さまざまなアプリケーションで使用されます。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
AsEnumerable | IEnumerable <T>として入力された入力を返します | 適用できません | 適用できません |
AsQueryable | (ジェネリック)IEnumerableは(ジェネリック)IQueryableに変換されます | 適用できません | 適用できません |
キャスト | コレクションの要素を指定されたタイプにキャストします | 明示的に型指定された範囲変数を使用します。例:単語の文字列strから | から…として… |
OfType | 特定のタイプにキャストする機能に応じて、値に基づいて値をフィルタリングします | 適用できません | 適用できません |
ToArray | クエリの実行を強制し、コレクションを配列に変換します | 適用できません | 適用できません |
ToDictionary | キーセレクター関数に基づいて、要素をDictionary <TKey、TValue>に設定し、LINQクエリの実行を強制します | 適用できません | 適用できません |
ToList | コレクションをList <T>に変換することにより、クエリの実行を強制します | 適用できません | 適用できません |
見上げる | キーセレクター関数に基づいて、クエリの実行を強制し、要素をLookup <TKey、TElement>に配置します | 適用できません | 適用できません |
連結
2つのシーケンスの連結を実行し、重複を削除しないという事実を除いて、操作の点でUnion演算子と非常に似ています。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
コンキャット | 2つのシーケンスが連結されて、1つのシーケンスが形成されます。 | 適用できません | 適用できません |
集約
任意のタイプの目的の集計を実行し、LINQでカスタム集計を作成できるようにします。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
集計 | コレクションの値を操作して、カスタム集計操作を実行します | 適用できません | 適用できません |
平均 | 値のコレクションの平均値が計算されます | 適用できません | Aggregate…In…IntoAverage() |
カウント | コレクション内の述語関数を満たす要素をカウントします | 適用できません | Aggregate…In…IntoCount() |
LonCount | 膨大なコレクション内の述語関数を満たす要素をカウントします | 適用できません | Aggregate…In…IntoLongCount() |
マックス | コレクション内の最大値を見つける | 適用できません | 集約…In…IntoMax() |
最小 | コレクション内に存在する最小値を見つける | 適用できません | 集約…In…IntoMin() |
和 | コレクション内の値の合計を調べる | 適用できません | Aggregate…In…IntoSum() |
定量化操作
これらの演算子は、シーケンス内の一部またはすべての要素が特定の条件を満たす場合に、ブール値、つまりTrueまたはFalseを返します。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
すべて | シーケンスのすべての要素が述語条件を満たす場合、値「True」を返します | 適用できません | 集約…で…すべてに(…) |
どれか | シーケンスを検索して、同じ要素のいずれかが指定された条件を満たすかどうかを判断します | 適用できません | Aggregate…In…IntoAny() |
含まれています | シーケンスに特定の要素が含まれていない場合に特定の要素がシーケンスに存在することが判明した場合は「True」値を返し、「false」値を返します。 | 適用できません | 適用できません |
パーティション演算子
シーケンスの要素を再配置してから1つを返すことなく、入力シーケンスを2つの別々のセクションに分割します。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
スキップ | シーケンス内の指定された数の要素をスキップし、残りの要素を返します | 適用できません | スキップ |
SkipWhile | スキップする要素の数がブール条件で指定されることを除いて、スキップの場合と同じです。 | 適用できません | スキップする |
取る | シーケンスから指定された数の要素を取得し、残りの要素をスキップします | 適用できません | 取る |
TakeWhile | 取得する要素の数がブール条件で指定されることを除いて、Takeの場合と同じです。 | 適用できません | しばらくお待ちください |
発電操作
値の新しいシーケンスは、世代演算子によって作成されます。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
DefaultIfEmpty | 空のシーケンスに適用する場合、シーケンス内にデフォルト要素を生成します | 適用できません | 適用できません |
空の | 空の値のシーケンスを返し、最も単純な世代演算子です | 適用できません | 適用できません |
範囲 | 整数または数値のシーケンスを持つコレクションを生成します | 適用できません | 適用できません |
繰り返す | 特定の長さの繰り返し値を含むシーケンスを生成します | 適用できません | 適用できません |
セット操作
セット操作には4つの演算子があり、それぞれが異なる基準に基づいて結果を生成します。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
明確な | 重複データがある場合はそれをフィルタリングして、コレクションから一意の値のリストを作成します | 適用できません | 明確な |
を除いて | 2つのコレクションの値を比較し、一方のコレクションからもう一方のコレクションにないものを返します | 適用できません | 適用できません |
交差する | 2つの別々のコレクションで同一であることが判明した値のセットを返します | 適用できません | 適用できません |
連合 | 2つの異なるコレクションのコンテンツを1つのリストに結合し、重複するコンテンツもありません | 適用できません | 適用できません |
平等
2つの文(列挙可能)を比較し、それらが完全に一致するかどうかを判断します。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
SequenceEqual | 2つのシーケンスが互いに同一であることが判明した場合、ブール値が生成されます | 適用できません | 適用できません |
要素演算子
DefaultIfEmptyを除いて、残りの8つの標準クエリ要素演算子はすべて、コレクションから1つの要素を返します。
例を表示
オペレーター | 説明 | C#クエリ式の構文 | VBクエリ式の構文 |
---|---|---|---|
ElementAt | コレクション内の特定のインデックス内に存在する要素を返します | 適用できません | 適用できません |
ElementAtOrDefault | ElementAtと同じですが、特定のインデックスが範囲外の場合にデフォルト値を返す点が異なります。 | 適用できません | 適用できません |
最初 | コレクション内の最初の要素、または特定の条件を満たす最初の要素を取得します | 適用できません | 適用できません |
FirstOrDefault | そのような要素が存在しない場合にデフォルト値も返すという事実を除いて、Firstと同じです | 適用できません | 適用できません |
最終 | コレクションに存在する最後の要素、または特定の条件を満たす最後の要素を取得します | 適用できません | 適用できません |
LastOrDefault | そのような要素が存在しない場合にデフォルト値も返すという事実を除いて、Lastと同じです | 適用できません | 適用できません |
シングル | コレクションのlone要素または特定の条件を満たすlone要素を返します | 適用できません | 適用できません |
SingleOrDefault | そのような孤独な要素が存在しない場合にデフォルト値も返すことを除いて、Singleと同じです | 適用できません | 適用できません |
DefaultIfEmpty | コレクションまたはリストが空またはnullの場合、デフォルト値を返します | 適用できません | 適用できません |