我有一个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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句