LINQ查询以按区域查找每个项目的平均成本

时间:2017-04-27 17:48:44

标签: linq

我有一个winforms应用程序和一个由商店数据和商品销售数据组成的数据库。在从数据库检索的数据中,我想使用LINQ过滤生成的对象集合。我需要什么LINQ查询才能加入ShopItemSale个对象并查询它们以按地区选择分组以及每个项目的平均成本?

Shop.cs
StoreId
Name
Region

ItemSale.cs
Name
Cost
Region

必填项:

Region Name | Average Item cost
Region1     | 22.50
Region2     | 15.30
Region3     | 15.90

1 个答案:

答案 0 :(得分:1)

我喜欢在使用连接时使用linq表达式查询。

var querySelect =
    from r in Shop
    join i in ItemSale on r.Region equals i.Region
    select new
    {
        Region = r.Region,
        ItemCost = r.Cost
    };

我发现对组使用lambda linq查询更容易

var queryGroup = querySelect
    .GroupBy(m => new { m.Region }
    .Select(m => new
    {
        Region = m.Key.Region,
        AverageItemCost = m.Average(x => x.ItemCost)
    };

你可以在一个查询中完成这两个查询,但我认为它更容易理解为两个单独的查询,并且组合它们没有显着的性能提升。