私はお互いに関係のある2つのテーブルを持っていますEntity Frameworkでこれを行うにはどうすればいいですか?
テーブルAはテーブルBと1対多の関係を持っているので、それぞれにナビゲーションプロパティが作成されます。
これでテーブルA(userName)の値をチェックする必要があり、テーブルB(ClubId)の値をチェックする必要があります。
だから私の心の中でそれが
Join the tables together
Where A.userName == "bob" &&
where B.clubId == "Car"
// return the count.
ようなものになるだろうが、今私は、エンティティのものと知っていることは確認する必要があり、私が参加し、その後でそれを行うことができれば私は疑問に思ってあまり一般的で合流します。
私はそれが正しい型(第2回)は戻りませんので、そう、これは動作しません
int count = Entity.TableA.where(a => a.userName == "bob" && a.TableB.where(i => i.ClubId == "Car")).Count();
これを試してみました。これは、私がどのようにそれが行われることが期待されるかを線に沿って考えた方法です。
どのように見えるのですか?
P.S
私はむしろ、私は上記のようにやったのLINQメソッドクエリで行う例があります。あなたのEFモデルはユーザーとクラブとの間の関係は、このような何かができていると仮定すると、
ああ。 うわー。私は彼の事件をより良く知っているか分からない。そのselectManyは私を捨てます。では、別のフィルタが必要な場合はどうなりますか?別のselectManyを追加しますか? 最初のメソッド構文がうまくいきます。内部的にダウンして2番目のことを行うかどうかはわかりません。すべてのクエリは同じ実行時間を要します。 2番目のものは何ですか?SelectManyは1つではありません。 a => a.TableB、(a、b)=>)は何ですか? – chobo2
私は、クエリ翻訳の修正プログラムで投稿を更新しました。 最初のSelectManyはネストされたコレクションを本質的に「平坦化」し、すべてのAからすべてのBのシーケンスを返します。 2番目のSelectManyは、AからBのコレクションを取得する "collectionSelector"と、AとBを指定して戻り値を指定する "resultSelector"の2つのデリゲートを受け入れます。LINQは、残りのクエリで使用するために、両方の入力オブジェクトを選択するだけです。 – dahlbyk