0

私はこのようなオブジェクトのリストを持っています:

List<ClassName> list = new List<ClassName>();
list.Add(new ClassName()
{
    Name = 1,
    Amount = 5
});
list.Add(new ClassName()
{
    Name = 2,
    Amount = 10
});
list.Add(new ClassName()
{
    Name = 1,
    Amount = 20
});
list.Add(new ClassName()
{
    Name = 3,
    Amount = 10
});
list.Add(new ClassName()
{
    Name = 3,
    Amount = 15
});

ここで、このリストをプロパティ別に要約しますName。結果には、同じエントリのすべてNameと合計に対して1つのエントリが含まれている必要があります。したがって、これは期待される結果になります。AmountName

List<ClassName> list = new List<ClassName>();
list.Add(new ClassName()
{
    Name = 1,
    Amount = 25
});
list.Add(new ClassName()
{
    Name = 2,
    Amount = 10
});
list.Add(new ClassName()
{
    Name = 3,
    Amount = 25
});

これをアーカイブするにはどうすればよいですか?

4

3 に答える 3

2

LINQ経由で実行します。

var result = list.GroupBy(x => x.Name)
    .Select(x => new ClassName { Name = x.Key, Amount = x.Sum(i => i.Amount) })
    .ToList();

LINQの詳細については、http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811bを参照してください。

于 2012-08-19T14:11:33.897 に答える
1
 var lst = list.GroupBy(g = > g.Name).Select(t = > new
 ClassName()
 {
     Amount = t.Sum(s=>s.Amount), Name = t.Key
 }).ToList();
于 2012-08-19T14:06:45.787 に答える
1
var result = list.GroupBy(x => x.Name).Select(x => new MyClass() {Name=x.Key, Amount= x.Sum(y => y.Amount));

また

List<MyClass> result = list.GroupBy(x => x.Name).Select(x => new MyClass() {Name=x.Key, Amount= x.Sum(y => y.Amount)).ToList();
于 2012-08-19T14:08:56.927 に答える