如何基于列表订购C#自定义对象集合

时间:2014-09-14 23:44:24

标签: c# linq

我有一个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的子集,然后是其余的。然后我将两个列表组合在一起并返回整个列表。我不确定这是否是正确的做法。此外,我不确定,一旦合并,它将保留添加项目的顺序,或者它将创建自己的订单。

由于

1 个答案:

答案 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();