2012-07-20 134 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