c#/ entityFramework有一些初学者的问题...显示的表格更大,我不知道'姓名'表格中的价值......
我有一个像这样的表tblFruits:
**tblFruits
ID Name Amount (kg)**
1 apple 10
2 orange 20
3 orange 30
4 lemon 40
5 apple 50
6 orange 60
我希望只展示一次相同的水果并总结相同水果的数量。
这是输出:
**tblFruitsTotal
ID Name Amount(kg)**
1 apple 60
2 orange 110
3 lemon 40
我需要一个List对象来绑定它我的数据网格在xaml..whats中最好的方法吗?请帮忙
答案 0 :(得分:1)
试试这个......
public class Fruit
{
public int Quantity { get; set; }
public string Name { get; set; }
}
static void Main(string[] args)
{
var fruits = new List<Fruit>
{
new Fruit {Name = "Apple", Quantity = 10},
new Fruit {Name = "Orange", Quantity = 20},
new Fruit {Name = "Orange", Quantity = 60},
new Fruit {Name = "Apple", Quantity = 50}
};
var groupedFruit = fruits.GroupBy(l => l.Name)
.Select(lg =>
new
{
Name = lg.Key,
TotalQuantity = lg.Sum(q => q.Quantity)
});
foreach (var fruit in groupedFruit)
{
Console.WriteLine("Fruit: {0} : Quantity: {1}",
fruit.Name, fruit.TotalQuantity);
}
Console.Read();
}
我已将代码添加到控制台应用程序中,以便您了解其工作原理。
答案 1 :(得分:0)
foreach (Fruits item in tblFruits.GroupBy(x => x.Name))
{
tblFruitsTotal.Add(new Fruits()
{
ID = tblFruitsTotal.Any() ? tblFruitsTotal.Max(x=>x.ID) + 1 : 1,
Name = item.First().Name,
Amount = item.Sum(x => x.Amount)
});
}
请务必加入'using System.Linq;'
答案 2 :(得分:-2)
下面将说明所有值,使它们唯一并增加数量。
Dictionary<string, value> _newTable = new Dictionary<string, value>();
foreach (var fruit in tblFruits) {
if (!_newTable.contains(fruit.name)) {
_newTable.Add(fruit.name, 0);
}
_newTable[fruit.name] += fruit.amount;
}
这是documentation,它是可枚举的和集合。列表也是如此,应该可以轻松绑定到xaml。