Asp.net mvc 如何在LINQtoSQL中执行多个GROUPBY?
如何在LINQtoSQL中执行多个GROUPBY 你能告诉我linq查询语法和linq方法语法吗 谢谢 编辑 我说的是多个参数,比如按性别和年龄分组 此外,我忘了在对年龄进行分组之前,我该如何说将所有年龄相加 如果我有这个例子,我会怎么做 表产品 产品ID 产品名称 产品数量 产品价格 现在想象一下,无论出于什么原因,我有很多行,每行都有相同的产品名称、不同的产品数量和产品价格 我如何按产品名称分组并将ProductQty和ProductPrice相加Asp.net mvc 如何在LINQtoSQL中执行多个GROUPBY?,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,如何在LINQtoSQL中执行多个GROUPBY 你能告诉我linq查询语法和linq方法语法吗 谢谢 编辑 我说的是多个参数,比如按性别和年龄分组 此外,我忘了在对年龄进行分组之前,我该如何说将所有年龄相加 如果我有这个例子,我会怎么做 表产品 产品ID 产品名称 产品数量 产品价格 现在想象一下,无论出于什么原因,我有很多行,每行都有相同的产品名称、不同的产品数量和产品价格 我如何按产品名称分组并将ProductQty和ProductPrice相加 我知道在这个例子中,可能没有意义,为什么会
我知道在这个例子中,可能没有意义,为什么会有一行又一行的相同产品名称,但在我的数据库中,这是有意义的,它不是产品。要按多个属性分组,您需要创建一个新对象以按以下方式分组:
var groupedResult = from person in db.People
group by new { person.Sex, person.Age } into personGroup
select new
{
personGroup.Key.Sex,
personGroup.Key.Age,
NumberInGroup = personGroup.Count()
}
抱歉,我没有看到您的最终编辑。我可能有点误解,但如果你把年龄加起来,你就不能按年龄分组。你可以按性别分组,求和或平均年龄……但你不能在一个语句中同时按性别分组和求和年龄。也许可以使用嵌套LINQ查询来获取任何给定性别的总年龄或平均年龄……不过要复杂一些
编辑:
要解决您的具体问题,它应该非常简单和直接。您仅按名称进行分组,因此其余部分是使用服务和具体dto类型更新的基本示例:
class ProductInventoryInfo
{
public string Name { get; set; }
public decimal Total { get; set; }
}
class ProductService: IProductService
{
public IList<ProductInventoryInfo> GetProductInventory()
{
// ...
var groupedResult = from product in db.Products
group by product.ProductName into productGroup
select new ProductInventoryInfo
{
Name = productGroup.Key,
Total = productGroup.Sum(p => p.ProductCost * p.ProductQty)
}
return groupedResult.ToList();
}
}
要按多个属性分组,您需要创建一个新对象以按以下方式分组:
var groupedResult = from person in db.People
group by new { person.Sex, person.Age } into personGroup
select new
{
personGroup.Key.Sex,
personGroup.Key.Age,
NumberInGroup = personGroup.Count()
}
抱歉,我没有看到您的最终编辑。我可能有点误解,但如果你把年龄加起来,你就不能按年龄分组。你可以按性别分组,求和或平均年龄……但你不能在一个语句中同时按性别分组和求和年龄。也许可以使用嵌套LINQ查询来获取任何给定性别的总年龄或平均年龄……不过要复杂一些
编辑:
要解决您的具体问题,它应该非常简单和直接。您仅按名称进行分组,因此其余部分是使用服务和具体dto类型更新的基本示例:
class ProductInventoryInfo
{
public string Name { get; set; }
public decimal Total { get; set; }
}
class ProductService: IProductService
{
public IList<ProductInventoryInfo> GetProductInventory()
{
// ...
var groupedResult = from product in db.Products
group by product.ProductName into productGroup
select new ProductInventoryInfo
{
Name = productGroup.Key,
Total = productGroup.Sum(p => p.ProductCost * p.ProductQty)
}
return groupedResult.ToList();
}
}
你的意思是按多个参数分组?还是组内的多级分组组?您是指通过多个参数进行分组?或者组中的多级分组?我可以在两条语句中完成,只要最终结果是我有一个合计的字段。你是在寻找年龄之和,还是平均年龄,每个性别?我在寻找关于Ex和age示例的总和,但在我的真实数据库中,我添加了两个表格。我列出了一个我想做的排序示例。您的声明是将产品成本和数量相加吗?或者它们最终会是两个不同的字段?我可以用两个语句来完成,只要最终结果是我有一个合计的字段。你是在寻找年龄的总和,还是平均年龄,每个性别?我在寻找关于Ex和age示例的总和,但在我的真实数据库中,我添加了两个表格。我列出了一个我想做的排序示例。您的声明是将产品成本和数量相加吗?或者他们最终会是两个不同的领域?