2009-05-06 14 views
4

LINQクエリ構文を使用して、次のコードをもっとうまく書く方法はありますか?LINQクエリ構文を使用して、次のコードをもっとエレガントに書く方法はありますか?

私は、これはトリックんだと思う
var mergedNotes = new List<Note>(); 

var noteGroupsByUserID = notes.GroupBy(x => x.UserID); 

foreach (var group in noteGroupsByUserID) 
{ 
    var sortedNotesByOneUser = group.OrderBy(x => x.CreatedOn).ToList(); 
    var mergedNotesForAUserID = GetMergedNotesFor(sortedNotesByOneUser); 
    mergedNotes.AddRange(mergedNotesForAUserID); 
} 

return mergedNotes; 

答えて

5

ないLINQの構文が、少なくともよりエレガントに元のコード。

5

:それは同じ結果を作成し、私のテストデータで

List<Note> mergedNotes = 
    notes 
    .GroupBy(x => x.UserID) 
    .SelectMany(g => GetMergedNotesFor(g.OrderBy(x => x.CreatedOn))) 
    .ToList(); 

...

var mergedNotes = new List<Note>(); 
mergedNotes.AddRange((from n in notes 
         orderby n.CreatedOn 
         group n by n.UserID into g 
         let m = GetMergedNotesFor(g) 
         select m).SelectMany(m => m)); 
return mergedNotes; 
+0

ありがとうございました。選択した回答がわかりやすいようです。 –

関連する問題