LINQ联接和求和查询返回重复的结果



我在LINQ中运行这个查询,它连接表并返回每个District 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个重复的District 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;

最新更新