c# - LINQ 连接和求和查询返回重复的结果
问题描述
我在 LINQ 中运行此查询,它连接表并返回每个地区 ID 的销售额总和。
var resultsalescity = (from so in _companysales
join en in _entity
on so.Id equals en.Id
group so by so.Id into totaledorders
from tot in totaledorders
join ad in _address
on tot.Id equals ad.EntityId
select new Salescities {
Totaledvalue = totaledorders.Sum(s = >s.TotalCost),
District = ad.DistrictId.ToString(),
}).ToList();
return resultsalescity;
我得到重复值返回:
[{"totaledvalue":3855.00,"district":"568"},{"totaledvalue":3855.00,"district":"568"}}
.....
如何删除地区 ID 上的重复项以只为每个地区返回一个值?
解决方案
我在具有不同销售值的结果中得到 4 个重复的地区 ID
这是正确的。因为它是按 ID 分组的。4 个重复的 District ID 的实际结果会有所不同_companysales.Id
。所以你可能正在寻找这样的东西
var groupedByIdAndDistrictData = (from so in _companysalesRepo.QueryNoTracking
join en in _entityRepo.QueryNoTracking on so.PharmacyId equals en.Id
join ad in _addressRepo.QueryNoTracking on so.PharmacyId equals ad.EntityId
group so by new {
so.Id,
ad.DistrictId
}
into totaledeorders
select new Salescities {
Totaledvalue = totaledeorders.Sum(s = >s.TotalCost),
District = totaledeorders.Key.DistrictId.ToString()
}).ToList();
var resultsalescity = groupedByIdAndDistrictData.GroupBy(p = >p.District)
.Select(g = >new Salescities {
Totaledvalue = g.Sum(s = >s.Totaledvalue),
District = g.Key
}).ToList();
return resultsalescity;
推荐阅读
- mysql - 如何使用 MySQL 为每个客户输出 3 个最高销售额?
- linux - 在 LINUX TERMINAL 中创建标题从“1.0”到“99.0”的文件,并删除数字总和为 15 的文件
- python - 如何编写一个程序,不断从用户那里获取输入,直到所有输入的总和达到 200
- r - 如何为 igraph R 中的有向图计算局部传递性和 Barrat 传递性
- python - 具有阿拉伯文本和数字变量的字段反转
- firebase - firebase 如何连接到烧瓶应用程序
- c# - C#- 检查字符串中是否只有允许的字符?
- python - 使用“导入文件”或“从文件导入变量”会破坏我的程序
- amazon-web-services - 哪个 aws 产品用于长时间运行的 ruby 任务执行?
- javascript - Discord.js 删除频道