c# - Linq 组通过提供不正确的统计信息
问题描述
我有一个表格,我想从中计算以下状态的统计信息:
预期输出:
Active = 12
OnHold = 10
Closed = 14
Filled = 15
Expired = 24
查询一:
var statistics = (from j in context.Job
where j.CompanyID == 100 &&
{100,101,102,103, 104 }.Contains(j.StatusID)
(j.ActiveDate == "0001-01-01" ? (j.CreationDate >= fromDate && j.CreationDate <= toDate):
(j.ActiveDate >= fromDate && j.fromDate <= today))
group j by new
{
j.StatusID
}
into g
select new
{
ActiveStats = g.Count(inner => (inner.StatusID == 100)),
OnHoldStats = g.Count(inner => (inner.StatusID == 101)),
}).FirstOrDefault();
对于上述查询,我得到的“ActiveStats”和“OnHoldStats”统计数据不正确。
查询 2:
var statistics = (from j in context.Job
where j.CompanyID == 100 &&
{100,101,102,103, 104 }.Contains(j.StatusID)
(j.ActiveDate == "0001-01-01" ? (j.CreationDate >= fromDate && j.CreationDate <= toDate):
(j.ActiveDate >= fromDate && j.fromDate <= today))
group j by 1 into g
into g
select new
{
ActiveStats = g.Count(inner => (inner.StatusID == 100)),
OnHoldStats = g.Count(inner => (inner.StatusID == 101)),
}).FirstOrDefault();
对于上述查询,我得到了正确的“ActiveStats”和“OnHoldStats”统计信息。
我只是不明白为什么查询 1 的结果不正确,为什么查询 2 的结果正确?
另外,哪个查询在性能方面更有效?
我很想了解这两个查询之间的区别,以及在效率和性能方面我应该选择哪个查询。
解决方案
根据所需的输出,您必须运行以下查询:
var query =
from j in context.Job
where j.CompanyID == 100 &&
{100,101,102,103, 104 }.Contains(j.StatusID)
(j.ActiveDate == "0001-01-01" ? (j.CreationDate >= fromDate && j.CreationDate <= toDate):
(j.ActiveDate >= fromDate && j.fromDate <= today))
group j by new { j.StatusID } into g
select new
{
StatusName =
j.Key.StatusID == 100 ? "Active"
: j.Key.StatusID == 101 ? "OnHold"
: j.Key.StatusID == 102 ? "Closed"
: j.Key.StatusID == 103 ? "Filled"
: "Expired",
Count = g.Count()
};
var statistics = query.ToList();
推荐阅读
- python - 使用 pandas 将部分无序的数据读入列
- reactjs - 如何关闭第二个 react-datepicker 输入字段的自动完成?
- python - '请求失败,状态码',403,'预期之一',
- python-poetry - Poetry可以根据对应C库的版本自动选择包版本吗
- objective-c - Objective-C:声明@protocol会产生错误非法接口限定符
- html - 在输入中放置一个可变宽度、浮动:右跨度的图像
- angular - 带 Angular 8 的静态空注入器错误 NGX-Bootstrap 选项卡模块
- powershell - 向 PowerShell 中的文件详细信息添加新属性
- .htaccess - 将 https ip 重定向到共享主机中 htaccess 中的域
- c++ - 为什么我不能使用继承的、受保护的泛型类型别名?