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 に答える