如何检索要列出的不同值的总和?
How do I retrieve a sum of distinct values to list?
支持我的应用程序的 SQL table 和模型与我在下面显示的非常相似。
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
[Key]
public int Id {get; set;}
public string CustomerName { get; set; }
public string FruitName { get; set;}
public string Charge {get; set;}
我想做的是拉出不同的 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());
我知道它不起作用的原因是因为 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()
});
//...
还可以进一步简化
var test = fruitToList
.GroupBy(_ => _.FruitName, _ => decimal.Parse(_.Charge))
.Select(g => new Fruit {
FruitName = g.Key,
Charge = g.Sum().ToString()
});
支持我的应用程序的 SQL table 和模型与我在下面显示的非常相似。
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
[Key]
public int Id {get; set;}
public string CustomerName { get; set; }
public string FruitName { get; set;}
public string Charge {get; set;}
我想做的是拉出不同的 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());
我知道它不起作用的原因是因为 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()
});
//...
还可以进一步简化
var test = fruitToList
.GroupBy(_ => _.FruitName, _ => decimal.Parse(_.Charge))
.Select(g => new Fruit {
FruitName = g.Key,
Charge = g.Sum().ToString()
});