【问题标题】:LINQ Join and Sum Query returns duplicate ResultsLINQ 连接和求和查询返回重复的结果
【发布时间】:2020-02-27 02:25:32
【问题描述】:

我在 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# arrays list linq group-by


    【解决方案1】:

    我在具有不同销售价值的结果中获得了 4 个重复的地区 ID

    没错。因为它是按 ID 分组的。 4 个重复区 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;
    

    【讨论】:

    • 您好,Phuong 感谢您的帮助!我想我解释得对。在我的最终查询结果中...我不介意我的商店 ID...我只想将每个地区 ID 的销售额相加而没有重复。
    • 是的,这个查询对我来说也很好??我删除了它,但我在结果中得到了 4 个重复的地区 ID,具有不同的销售价值...
    • 我在结果中得到 4 个重复的地区 ID,但销售额不同 这是正确的。因为如果你使用第二个查询,它是按Id, District分组的,4个重复区ID的实际结果会不一样_companysales.Id。所以你应该使用第三个查询。你明白吗?
    • message":"关键字 'AS' 附近的语法不正确。","isError":true,"detail":" 在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔型 breakConnection ,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2017-01-01
    相关资源
    最近更新 更多