gpt4 book ai didi

c# - Linq to SQL 从不返回正确结果的查询中返回多个计数

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:41 25 4
gpt4 key购买 nike

我有一个 Linq to SQL 查询,我想为行数返回三个计数。一个用于不等于零的字段 (HaveCount),另一个用于不等于零的另一个字段 (WantCount),另一个用于不等于零的另一个字段 (SaleCount)。

这是我的查询...

var counts = (from a in dc.tblMemberIssues
join b in dc.vwMembers on a.MemberID equals b.MemberID
where a.IssueID == issueID
group a by new { a.HaveCount, a.WantCount, a.SaleCount } into d
select new
{
HaveCount = d.Count(e => e.HaveCount != 0),
WantCount = d.Count(e => e.WantCount != 0),
SaleCount = d.Count(e => e.SaleCount != 0)
}).First();

但是它没有返回预期的结果。我意识到分组是错误的,但我不确定如何获得所需的结果。

例如,如果查询的第一部分(分组之前)返回这两行...

---------------------------------
HaveCount | WantCount | SaleCount
---------------------------------
1 | 0 | 1
1 | 1 | 0

我的查询现在正在返回...(即只有一行)

1         | 0         | 1

但我希望它返回所有行的计数...

2         | 1         | 1

我需要对我的查询做些什么才能使其按我需要的方式工作?

注意。尝试仅通过单个数据库查询来执行此操作。

最佳答案

您不应该对计数中的列进行分组。如果我理解正确的话,你不想对任何东西进行分组,但 Linq 不允许这样,所以将 true 作为分组依据。 (或任何其他常数)将您的查询更改为:

var counts = (from a in dc.tblMemberIssues
join b in dc.vwMembers on a.MemberID equals b.MemberID
where a.IssueID == issueID
group a by true into d
select new
{
HaveCount = d.Count(e => e.HaveCount != 0),
WantCount = d.Count(e => e.WantCount != 0),
SaleCount = d.Count(e => e.SaleCount != 0)
}).First();

关于c# - Linq to SQL 从不返回正确结果的查询中返回多个计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35928165/

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