如何使用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;
Run Code Online (Sandbox Code Playgroud)
我认为这样做的诀窍:
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;
Run Code Online (Sandbox Code Playgroud)
不是LINQ语法,但至少更优雅......
List<Note> mergedNotes =
notes
.GroupBy(x => x.UserID)
.SelectMany(g => GetMergedNotesFor(g.OrderBy(x => x.CreatedOn)))
.ToList();
Run Code Online (Sandbox Code Playgroud)
使用我的测试数据,它会创建与原始代码相同的结果.
归档时间: |
|
查看次数: |
150 次 |
最近记录: |