2013-02-06 75 views
0

我正在嘗試確定當前用戶是否對ProjectDoc進行投票。此查詢給我的值爲1. ProjectDocVote表中沒有與UserID匹配的值。 ViewBag.CurrentUserID值是正確的。使用Linq查詢來計算匹配條件的孫子元素

var count = Model.Project.ProjectDoc 
     .Where(a => a.Current == true && a.DocType == "Cover") 
     .Select(v => v.ProjectDocVote 
       .SingleOrDefault(u => u.UserID == ViewBag.CurrentUserID) 
     ) 
     .Count(); 

如何解決此查詢?

回答

1
var count = Model.Project.ProjectDoc 
    .Where(a => a.Current == true 
      && a.DocType == "Cover" 
      && a.ProjectDocVote.Any(v => v.UserID == ViewBag.CurrentUserID)) 
    .Count(): 
2

更換SelectSingleOrDefaultAny

var hasVoted = Model.Project.ProjectDoc 
        .Where(a => a.Current == true && a.DocType == "Cover") 
        .Any(v => v.ProjectDocVote 
           .Any(u => u.UserID == ViewBag.CurrentUserID)); 
+0

這是有益的,但我不知道怎麼去算出來的它,因爲我不能添加計數()來結束? –

+0

根據你的問題,你不想要一個計數:「我想確定當前用戶是否投了一個ProjectDoc」。但是,如果您想知道用戶投了多少票,您可以輕鬆地將「任意」外部轉換爲「計數」。 –

+0

感謝您澄清,你是對的,我只是使用if語句來查看計數是否大於0以查看它是否存在。 (這可能是不好的做法,我不確定。) –