2015-11-02 89 views
-2

我有以下代碼:一些困難寫LINQ查詢

IsServiceable = _context.Review.Any(r => r.SiteId == x.Id) ? _context.Review.All(r => r.SiteId == x.Id && r.IsValid == true) : true 

但正如你所看到的,因爲我嘗試兩次訪問數據庫的同一行中它不是有效的。

我需要編寫一個查詢(LINQ到實體)來檢查表命名Reviews 至少有一個排 其中siteId=5如果它不具有返回真正, 如果表評論有在至少有一行我需要檢查一個名爲isValid的布爾列,如果至少有一行siteId=5isValid列是false我需要返回false

+0

至少使示例代碼名稱和說明適合... – mikus

+0

你上面有榜樣! 和下面的解釋。 – Michael

+0

是啊,當然,並且LINE有InspectionReview表不行,並且行有IsNormal屬性不是isValid – mikus

回答

2

我相信您的解決方案在於這樣一個事實,只有在一種情況下你需要返回 - 一切回報真正。因此,如果您發現一行where sideId = 5且isValid = false,則返回false。否則,返回true。基於您的代碼,我建議類似如下:

IsServiceable = _context.InspectionReview.Any(r => r.SiteId == x.Id && r.isValid == false) ? false : true; 
+0

爲什麼不是IsServiceable =!_context.InspectionReview.Any(r => r.SiteId == x.Id && r.isValid == false):) – mikus

+0

否!!有兩種情況我需要返回FALSE! – Michael

+1

不是根據你迄今爲止所說的話,在上面的答案的前面或接受,它完全正確地爲你所要求的 – mikus

0

你最有可能的導航性能,所以你可以嘗試

IsServiceable = _context.Site.Any(s => s.Id == x.Id && s.Reviews.Any(r => r.IsValid));