0

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

1 回答 1

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,因此根据您的需要它可能会变得更复杂一些)

于 2012-07-20T13:11:05.837 回答