Sku*_*nia 4 c# asp.net-mvc linq-to-entities
支持我的应用程序的SQL表和模型与下面显示的非常相似。
Id | CustomerName | FruitName | Charge
_____________________________________
1 | Bob | Banana | 3.00
2 | Jill | Apple | 2.00
3 | Bob | Apple | 3.00
4 | Marvin | Banana | 1.00
5 | Sam | Pear | 4.00
Run Code Online (Sandbox Code Playgroud)
[Key]
public int Id {get; set;}
public string CustomerName { get; set; }
public string FruitName { get; set;}
public string Charge {get; set;}
Run Code Online (Sandbox Code Playgroud)
我想这样做是拉动明显FruitName和Charge.Sum()并显示它ToList()在我的视野。这是我尝试过的
var fruitToList = (from f in db.fruit select f).ToList();
var test = fruitToList.GroupBy(x => x.FruitName).Sum(y => y.Charge).Select(z => z.First());
return View(test.ToList());
Run Code Online (Sandbox Code Playgroud)
我知道它不起作用的原因是因为Charge需要类似这样的东西,decimal.Parse(y.Charge)但是我无法弄清楚如何在Sum()函数中做到这一点。我应该以不同的方式去做吗?
奇怪的是,费用是一个字符串,但总会少一些,因为数据已经存在于列表中,因此您可以按水果名称分组,将费用提取为小数并累加该组
例如
//...
var test = fruitToList
.GroupBy(_ => _.FruitName, _ => new { Charge = decimal.Parse(_.Charge) })
.Select(g => new Fruit {
FruitName = g.Key,
Charge = g.Sum(f => f.Charge).ToString()
});
//...
Run Code Online (Sandbox Code Playgroud)
也可以进一步简化
var test = fruitToList
.GroupBy(_ => _.FruitName, _ => decimal.Parse(_.Charge))
.Select(g => new Fruit {
FruitName = g.Key,
Charge = g.Sum().ToString()
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |