2012-07-20 141 views
0

我寫了一些LINQ,但它沒有返回正確的數據,它似乎忽略了我的where子句。任何人都可以告訴我我在做什麼錯誤的語法?LINQ語法和where子句

IEnumerable<Ranking> lst = (from r in results 
    join m in membersToRank on r.UserId equals m.userId 
    join t in teamsToRank on m.teamId equals t.teamId 
    where r.ResultDate >= rankingStart 
     && r.ResultDate <= rankingEnd 
    select new Ranking 
    { 
     memberId = m.memberId, 
     chain = t.chain, 
     name = m.name, 
     teamId = m.teamId, 
     value = results.Count(i => i.IsCorrect && i.UserId == m.userId) 
    }).ToList(); 
+0

你的語法是好的,你可以顯示什麼錯誤意味着烏爾查詢 – 2012-07-20 13:11:48

回答

3

此行

value = results.Count(i => i.IsCorrect && i.UserId == m.userId) 

將繞過where子句。你已經不得不重複where

value = results.Where(...).Count(i => i.IsCorrect && i.UserId == m.userId) 

var results2 = results.Where(...) 

,然後只使用results2

(如阿里納斯,它甚至會繞過join,所以它可能會變得有點複雜取決於你想要什麼)

+0

的輸出或者,您可以簡單地使用['into'](http://msdn.microsoft.com/zh-cn/library/bb311045)關鍵字來創建一個標識符,而不是再次指定「where」和「join」指的是已經過濾和加入的數據。 – 2012-07-20 13:22:24