我有一个C#自定义对象集合,其属性名称为ISBN。我还有一个变量,其中有一些但不是全部的ISBN以List的形式出现。我想订购自定义对象集合,以便列出列表中的那些用户名,然后列出其他用户名。我做了类似以下的事情:
var allBooks = GetAllBooks();
//First show the books popular among your friends followed by others from isbnList.
var priorityList = allBooks.Where(p => isbnList.Contains(p.ISBN)).ToList();
var otherList = allBooks.Where(p => !isbnList.Contains(p.ISBN)).ToList();
priorityList.AddRange(otherList);
return priorityList;
基本上我首先获得对应List的子集,然后是其余的。然后我将两个列表组合在一起并返回整个列表。我不确定这是否是正确的做法。此外,我不确定,一旦合并,它将保留添加项目的顺序,或者它将创建自己的订单。
由于
答案 0 :(得分:3)
您可以将OrderBy(Descending)
/ ThenBy(Descending)
与bool
一起使用。 false
将在true
之前,因此要获得正确的订单,您需要OrderByDescending
:
var allBooks = GetAllBooks();
//First show the books popular among your friends followed by others from isbnList.
var priorityList = allBooks.OrderByDescending(p => isbnList.Contains(p.ISBN)).ToList();