c# - C# Linq - 对已经分组的数据进行分组
问题描述
我已经对现在看起来像这样的数据进行了分组:
<tr>
<th>Id</th>
<th>Type</th>
<th>Amount</th>
</tr>
<tr>
<td>1</td>
<td>Delivered</td>
<td>100</td>
</tr>
<tr>
<td>2</td>
<td>Sent</td>
<td>150</td>
</tr>
<tr>
<td>3</td>
<td>Received</td>
<td>110</td>
</tr>
<tr>
<td>4</td>
<td>Delivered</td>
<td>79</td>
</tr>
<tr>
<td>5</td>
<td>Sent</td>
<td>30</td>
</tr>
这是我如何得到它的代码:
var query = await _context.product.AsNoTracking().Where(x => (x.productDate.Date >= DateTime.Now.AddDays(-30) && x.productDate.Date <= DateTime.Now.Date).ToListAsync();
if (query == null) return null;
var data = query.GroupBy(x => x.productStatusId)
.Select(product => new productsChartDTO
{
Type =
(
product.FirstOrDefault().productStatusId == (int)Enums.productStatus.Delivered || product.FirstOrDefault().productStatusId == (int)Enums.productStatus.InProcess ? "Delivered" :
product.FirstOrDefault().productStatusId == (int)Enums.productStatus.Sent || product.FirstOrDefault().productStatusId == (int)Enums.productStatus.InProcess ? "Sent" :
product.FirstOrDefault().productStatusId == (int)Enums.productStatus.Received ? "Received" : "Unknown"
),
Amount = product.Sum(x => x.Amount)
});
return data;
可以看到伙计们,即使我按 分组productStatusId
,如果productStatus
在 ' InProcess
' 或在 ' Delivered
' 中,就会有类型“ Delivered
”,所以在这个查询之后,我看到的结果Delivered
是我在示例中发布的两次“”。
我认为在这次执行之后我应该再次对数据进行分组?
我怎么能做到这一点?
是否可以继续对这个查询进行分组,或者应该有另一个会再次分组?
谢谢
干杯
解决方案
只需将您的逻辑移动到该GroupBy
方法并返回一个类型string
而不是int
从中返回一个类型:
var data = query
.GroupBy(x => x.productStatusId == (int)Enums.productStatus.Delivered || x.productStatusId == (int)Enums.productStatus.InProcess ? "Delivered" :
x.productStatusId == (int)Enums.productStatus.Sent || x.productStatusId == (int)Enums.productStatus.InProcess ? "Sent" :
x.productStatusId == (int)Enums.productStatus.Received ? "Received" : "Unknown")
.Select(product => new productsChartDTO
{
Type = product.Key,
Amount = product.Sum(x => x.Amount)
});
推荐阅读
- android - Android NavHostFragment(片段)膨胀失败,ViewBinding(使用导航组件)
- regex - 正则表达式使以逗号分隔的数字无效
- xamarin.forms - 如何在 xamarin 表单中使用 AbsoluteLayout 在我的图像上设置 AbsolutePosition
- sql - 将括号中的值拆分为列
- python - 如何使用python解析HTML中存在的符号/运算符,例如'=,*,'',==='
- java - 为什么这段代码会给出空指针异常?我认为 Character 类可以处理分配的 null 吗?
- node.js - 将 typescript ^3.7.2 更新为最新的“typescript”后:“^4.4.4”-错误 TS2339:“Navigator”类型上不存在属性“msSaveOrOpenBlob”
- ios - 单击按钮时未加载视图
- .net - 我找不到这个soap wcf请求头的一套算法
- mongodb - 在 Mongodb 开销中具有更多深度与更广度的结构