LINQ语法和where子句

时间:2012-07-20 13:08:55

标签: c# linq

我写了一些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();

1 个答案:

答案 0 :(得分: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,因此根据你的需要可能会变得更复杂一些)