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