我想在屏幕底部显示用户客户端备注。我正在做的是将用户客户端笔记与其余笔记分开,然后再将它们添加到列表中。由于AddRange在最后添加了范围,所以我得到了我的预期。
var note1 = _notes.Where(n => n.NoteTypeID != (int)NoteTypes.User_Client_Note);
var note2 = _notes.Where(n => n.NoteTypeID == (int)NoteTypes.User_Client_Note);
_notes = new List<ProjectsActiveNote>();
_notes.AddRange(note1);
_notes.AddRange(note2);
我想知道是否有一种方法可以直接执行此操作。
答案 0 :(得分:2)
您可以使用OrderBy
。
_notes = _notes.OrderBy(n => n.NoteTypeID != (int)NoteTypes.User_Client_Note ? 0 : 1).ToList();
基本上,它会首先放置不是用户客户端注释的注释,因为order by将为这些注释返回0,而其他注释将返回1。在我的测试中,它仍然保留了不同组中的顺序。
答案 1 :(得分:0)
没有办法进行&#34;小组移动&#34;就像在列表中一样。
但是,您可以编写一个以正确顺序返回元素的查询,甚至可以枚举它们并将它们存储在列表中(如果您愿意)。
var clientNotes = _notes.Where(n => n.NoteTypeID == (int)NoteTypes.User_Client_Note);
return notes.Execpt(clientNotes).Concat(clientNotes);
将按照您想要的顺序返回IEnumerable
。