List サブコレクションをプロパティとして含む List コレクションがあり、特定のプロパティの値に基づいてそのサブコレクション内の項目を除外したいと考えています。
簡単にするために、メイン コレクションを THING とサブコレクションを SUBTHING と呼びます。それらは異なるタイプです。THINGS には、1 つから複数の SUBTHINGS を含めることができます。SUBTHING には、フィルター処理する 2 つのプロパティがあり、PROP1 は 1 にする必要があり (1、2、3 にすることができます)、PROP2 は NULL にすることはできません (文字列を含めることができます)。
したがって、以下のようなクエリを使用すると、必要なものが得られるように見えます (ただし、All() が期待どおりに機能しているかどうかはわかりません)。
search = from c in search
where c.SUBTHING.All(s=>s.PROP1==1)
select c;
次に、他のプロパティを追加すると疑わしくなります。
search = from c in search
where c.SUBTHING.All(s=>s.PROP1==1 && s.PROP2 != NULL)
select c;
そして、PROP2 が Null である THINGS を取得します。
Any() に切り替えると、SUBTHING のすべてのフィルタリングが失われ、PROP1 = 1,2,3 である SUBTHINGS と、PROP2 が NULL であり NULL ではない SUBTHINGS が表示されます。
私が取得しようとしているのは、すべてのTHING IDをリストし、次にすべてのSUBTHINGSの名前をリストするコレクションです。次のようなものです:
THING.ID
SUBTHING.Name
SUBTHING.Name
THING.ID
SUBTHING.Name
SUBTHING.Name
THINGとSUBTHINGは2つの異なるタイプであるため、LINQでTHINGSをフィルタリングしながらSUBTHINGSもフィルタリングすることは可能ですか?