2012-03-05 7 views
1

私は学生テーブルとコーステーブルの間に1対多の関係を持っています。私は、現時点では特定の条件に一致するコースを持っているすべての学生を返すように望んでいた私は、これは正常に動作今、この1対多の関係 - 子供の一致のみを返します

.Context.Users.Where(it => 
         it.Category.Description == "Student" && 
         it.Courses.All(p => p.Submitted == true && p.StatusId == null) && 
         it.Courses.Count > 0); 

持っています。 "it.Courses.Count> 0"を削除すると、コースを持たない生徒と一致します。カウントなしでこれを行う良い方法はありますか?

おかげで、

デール

答えて

1

あなたはコレクションは、「任意の」要素(少なくとも1つ)とされていた場合に尋ねる

it.Courses.Any() 

it.Courses.Count > 0を置き換えることによって、それを少し向上させることができSQLではEXISTSに変換されます。

+0

おかげのような何かをしたいように、私はこの方法を使用します見えます。 T-SQLで行うことをLinqに変換しようとするのはちょっと変です。 – Foxster

0

は、あなたが入力のために、この

Context.Users.Where(it => 
         it.Category.Description == "Student" && 
         it.Courses.Any(p => p.Submitted == true && p.StatusId == null)) 
+0

これは、他のコースが提出されている限り、提出されていないコースを持っている学生も返します。これは別の結果を持つ別のクエリです。 – Slauma

+0

私はあなたが正しいと思う、私は彼の質問を誤解している。 –