首页 > 解决方案 > 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 上的重复项以只为每个地区返回一个值?

标签: c#arrayslistlinqgroup-by

解决方案


我在具有不同销售值的结果中得到 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;

推荐阅读