LINQ クエリで 1 つのテーブルに対して複数のカウントを行うのに問題があります。私はNHibernate、LINQ to NHibernate、およびC#を使用しています。
query はデータが入力されたリストです。FullRef というブール値を持つテーブルがあります。LINQ クエリを実行して、各 TrackId で FullRef = false および FullRef = true の発生回数を取得したいと考えています。TrackId は、track.Source == "UserRef" を取得するたびに新しい行を取得します。
次のクエリでは、FullRef = true の正しい数カウント (FullRefTrueCount から) を取得しますが、FullRefFalseCount で未知の間違った数を返します。
var query2 = from track in query
where track.Source == "UserRef"
group track by new { TrackId = track.TrackId, FullRef = track.FullRef } into d
select new FullReferrer
{
Customer = d.Key.TrackId,
FullRefFalseCount = d.Where(x => x.FullRef == false).Count(),
FullRefTrueCount = d.Where(x => x.FullRef == true).Count()
};
また、グループに FullRef が含まれないように変更しようとしました。これは、このように by の FullRef = track.FullRef を削除することによって行われました。
var query2 = from track in query
where track.Source == "UserRef"
group track by new { TrackId = track.TrackId } into d
select new FullReferrer
{
Customer = d.Key.TrackId,
FullRefFalseCount = d.Where(x => x.FullRef == false).Count(),
FullRefTrueCount = d.Where(x => x.FullRef == true).Count()
};
これで、.Where(x => x.FullRef == true/false) ステートメントを無視して、TrackId の合計数が得られます。
誰でもそれを修正する方法について何か考えがありますか? 問題は「グループ化」だと思います。どうにかしてグループ化を避けることはできますか? 参加する必要がありますか?