1

私は次のリストを持っています:

class test
{
    name,
    timestamp
}

同じ名前の最後の(最新の)テストをすべて取得したいと思います。多くのテストのタイムスタンプは同じです。

例えば:

name1, 2012-10-25 3:00PM
name1, 2012-10-25 3:00PM
name2, 2012-10-25 3:05PM
name2, 2012-10-25 3:05PM
name1, 2012-10-25 3:10PM
name1, 2012-10-25 3:10PM
name2, 2012-10-25 3:15PM
name2, 2012-10-25 3:15PM

名前ごとに最後のテストを取得するだけで済みます。

name1, 2012-10-25 3:10PM
name1, 2012-10-25 3:10PM
name2, 2012-10-25 3:15PM
name2, 2012-10-25 3:15PM
4

2 に答える 2

1
var groups = list.GroupBy(x => x.name)
                 .Select(x => new  test{ 
                    Name = x.Key, 
                    TimeStamp = x.Max(y => y.timestamp) 
                  })
                 .ToList();
于 2012-10-25T17:13:48.010 に答える
0

これを試して:

var q = from l in list
        group l by l.Name into g
        select new
        {
            Name = g.Key,
            Max = g.Max (x => x.Timestamp)
        } into x
        from y in list 
        where x.Name == y.Name && x.Max == y.Timestamp
        select y;

ここで起こることは、まず によるグループ化でlistありName、それを行うことで、グループごとに max を選択しますTimestamp。これは行きinto xます。次に、同じlistものをグループ化されたものに再結合し、グループ化のすべてのペアに一致させます。このようにして、グループ化されたアイテムに一致するすべての元のアイテムを選択しています。

于 2012-10-25T18:12:31.140 に答える