2012-03-05 35 views
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

你可以通過

it.Courses.Any() 

,詢問如果集合有「任何」元素(至少一個)並更換it.Courses.Count > 0提高那麼一點點在SQL中轉換爲EXISTS

+0

感謝您的投入,我會用這種方法。嘗試將你在T-SQL中做的事情轉換成Linq – Foxster 2012-03-06 08:55:21

0

看起來你想這樣的事情

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

這總是有點奇怪。這還會返回沒有提交課程的學生(只要他們提交了其他課程)。這是另一個結果不同的查詢。 – Slauma 2012-03-05 18:46:07

+0

我認爲你是對的,我誤解了他的問題。 – 2012-03-05 19:23:43