1

私はメンバーを持つメッセージリストを持っています:

テキスト = m.Text、ユーザー = m.User、日付 = m.Date

このリストには、次のようなすべてのメッセージが含まれます

Text = "How Are You"
User = "Michael"
Date = "1/1/12"

Text = "Well Done"
User = "Michael"
Date = "2/1/12"

Text = "Who?"
User = "John"
Date = "1/1/12"

同じ人からの複数のメッセージを表示せず、次のような最後のメッセージのみを表示する人々から最新のメッセージを取得する必要があります。

Text = "Well Done"
User = "Michael"
Date = "2/1/12"

Text = "Who?"
User = "John"
Date = "1/1/12"

ご覧のとおり。同一人物からの前のメッセージを削除したい。

私は現在使用しています:

var messages = (from m in mList select new
{
Text = m.Text, 
User = m.User, 
Date = m.Date
}).ToList();

目標を達成するには、このクエリに何を追加すればよいですか?

ありがとうございました!

4

2 に答える 2

2
var messages = (from m in mList select new
{
   Text = m.Text, 
   User = m.User, 
   Date = m.Date
})
.GroupBy(m => m.User)
.Select(g => g.OrderByDescending(m => m.Date).First())
.ToList();
于 2012-08-23T07:06:27.257 に答える
0
try{
    var messages = (from m in mList select new
    {
        Text = m.Text, 
        User = m.User, 
        Date = DateTime.Parse(m.Date)
    })
    .GroupBy(x => x.User).Select(x => x.First()).ToList();
}catch{}

日付は文字列でソートできないため...

于 2012-08-23T07:08:26.317 に答える