LINQ マルチフィールド接続: 複数のエンティティを効率的に関連付けます
LINQ では、複数のエンティティを接続する場合、通常は join
キーワードを使用します。単一フィールド結合の方が一般的ですが、複数フィールド結合は単純な構文調整によって簡単に実装できます。
複数フィールド結合構文
単一の LINQ クエリで複数のフィールドを結合するための構文は次のとおりです:
<code class="language-csharp">from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }</code>
new
キーワードは、結合に使用される 2 つのエンティティのフィールドを結合する匿名型を作成します。等号の左側の匿名型は最初のエンティティの接続条件を表し、右側は 2 番目のエンティティの接続条件を表します。
例
これは例です:
<code class="language-csharp">var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }</code>
このクエリは、field1
フィールドと field2
フィールドに基づいて entity
と entity2
を結合し、両方のエンティティの指定されたフィールドに一致するレコードを含む結合シーケンスを返します。
その他の注意事項
接続フィールドのデータ型には互換性がある必要があることに注意してください。さらに、join
キーワードは内部結合を実行します。これは、フィールド値が一致するレコードのみが返されることを意味します。
左外部結合を実行する必要がある場合は、GroupJoin
演算子を使用できます。例:
<code class="language-csharp">var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 } into yGroup from y in yGroup.DefaultIfEmpty()</code>
このクエリは左外部結合を実行し、entity
テーブル内に一致するレコードがない場合でも、entity2
テーブル内のすべてのレコードが返されるようにします。
以上が単一の LINQ クエリで複数フィールド結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。