簡體   English   中英

如何使用LINQ查詢語法更優雅地編寫以下代碼?

[英]How can I write the following code more elegantly using LINQ query syntax?

如何使用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;

我認為這樣做的訣竅:

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;

不是LINQ語法,但至少更優雅......

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

使用我的測試數據,它會創建與原始代碼相同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM