cho*_*bo2 0 asp.net-mvc linq-to-sql
怎么能在linq到sql中做多个"group by's"?
你能用linq查询语法和linq方法语法向我展示.
谢谢
编辑.
我说的是多个参数,比如按"性别"和"年龄"进行分组.
另外我忘了提到在我分组之前我怎么说加起来所有的年龄.
如果我有这个例子我将如何做到这一点
表产品
ProductId ProductName ProductQty ProductPrice
现在想象一下,无论出于什么原因,我都有大量的行,每行都有相同的ProductName,不同的ProductQty和ProductPrice.
我如何通过产品名称填充下边缘并将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()
}
Run Code Online (Sandbox Code Playgroud)
道歉,我没有看到你的最终编辑.我可能会误解,但如果你总结年龄,你就不能把它归为一类.您可以按性别分组,总计或平均年龄......但您不能在一个声明中同时按性别和总计年龄进行分组.有可能使用嵌套的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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |