linqのエンティティの子要素を1つのlinqクエリでフィルタリングする必要があります。これは可能ですか?Linqの子コレクションをフィルタリングする方法
2つの関連テーブルがあるとします。詩と詩の翻訳。 LINQ to SQLによって作成されたエンティティは、VerseTranslationのコレクションである子オブジェクトを含むVerseオブジェクトを持っています。私はフォローのLINQクエリ
var res = from v in dc.Verses
where v.id = 1
select v;
を持っている場合
は今、私は、そのIDが1であり、各詩のオブジェクトはVerseTranslationsからすべての子オブジェクトが含まれている詩のコレクションを取得します。
私がしたいことは、Verse Translationsの子リストをフィルタリングすることです。
私が思いついた唯一の方法は、新しい匿名タイプを使用することです。次のように
var res= from v in dc.Verses
select new myType
{
VerseId = v.VerseId,
VText = v.Text,
VerseTranslations = (from trans in v.VerseTranslations
where languageId==trans.LanguageId
select trans
};
上記のコードは機能しますが、新しいクラスを宣言する必要がありました。新しいクラスを宣言する必要がないように、子テーブルのフィルタリングを最初のlinqクエリに組み込むことができるようなやり方でこれを行う方法はありません。
よろしく、 MAC
私はリンクから理解していますが、その例のbtwは単一のオブジェクトを取得してから、Loadを実行します。私の場合、私はresのコレクションを持っていますが、私はまだ私のシナリオにそれを適応させることができませんでした。たぶんその睡眠の欠如:/ – MAC
ok..dumb質問...私はインクルードメソッドを見つけることができません! はいこれはデータベースからのもので、2つのテーブルには関係があります。 したがって、dcはdatacontextであり、Versesはテーブルです。私はインクルード関数を取得することはできません。 – MAC
エンティティフレームワークまたはlinqをSQLに使用していますか? –