我有一个winforms应用程序和一个由商店数据和商品销售数据组成的数据库。在从数据库检索的数据中,我想使用LINQ过滤生成的对象集合。我需要什么LINQ查询才能加入Shop
和ItemSale
个对象并查询它们以按地区选择分组以及每个项目的平均成本?
Shop.cs
StoreId
Name
Region
ItemSale.cs
Name
Cost
Region
必填项:
Region Name | Average Item cost
Region1 | 22.50
Region2 | 15.30
Region3 | 15.90
答案 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)
};
你可以在一个查询中完成这两个查询,但我认为它更容易理解为两个单独的查询,并且组合它们没有显着的性能提升。