2 番目のコレクション B (1 から n) に対応するキーを持たないコレクション A からすべてのアイテムを取得する、または B に要素が存在する場合は、MyValue を持つアイテムのみを取得するための効率的な LINQ クエリが必要です (可能であればメソッド構文で)。ヌル。つまり、B に存在しない A のすべての要素を返すか、少なくとも 1 つの行が MyValue = null である B に存在する場合に返します。
table A
{
int MyKey (primary_key);
}
table B
{
int MyKey (foreign_key to A.MyKey);
string MyValue;
}
私は Except() を試していましたが、これは両方のコレクションが同じ型の場合にのみ機能します。GroupJoin() を試していましたが、参加後に重複を削除する方法が見つかりませんでした。
a.GroupJoin(
b.Where(item => item.Value = null),
el => el.MyKey,
el2 => el2.MyKey,
(el3, el4) => el3);
これで、もう存在しないために再度結合された B のアイテムを除外します。
純粋なSQLでは、達成するのは非常に簡単です:
select * from A a left join B b on a.MyKey = b.MyKey where MyValue is null;