gpt4 book ai didi

c# - LINQ 查询中单个表的多个计数

转载 作者:行者123 更新时间:2023-11-30 20:57:14 24 4
gpt4 key购买 nike

我在 LINQ 查询中对单个表进行多次计数时遇到问题。我正在使用 NHibernate、LINQ to NHibernate 和 C#。

查询是一个填充列表。我有一个表,它有一个名为 FullRef 的 bool 值。我想做一个 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。这是通过像这样删除 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()
};

现在它为我提供了 TrackId 的总数,忽略了我的 .Where(x => x.FullRef == true/false) 语句。

有人知道如何修复它吗?我想这是问题所在的“分组依据”。我能以某种方式避免分组吗?我可能需要加入吗?

最佳答案

对于 NHibernate 我不知道,但是使用 Linq With Entity Framework 这应该能得到你想要的:

var query2 = (
from track in someDbSet
select new FullReferrer
{
Customer = track.trackId
, FullRefFalseCount = (from fullRefFalse in someDbSet.tracks
where fullRefFalse.IsSale == false
&& fullRefFalse.trackId == track.trackId
select fullRefFalse).Count()
, FullRefTrueCount = (from fullRefTrue in someDbSet.tracks
where fullRefTrue.IsSale == true
&& fullRefTrue.trackId == track.trackId
select fullRefTrue).Count()
}
).Distinct();

关于c# - LINQ 查询中单个表的多个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16982783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com