如何基于列表对C#自定义对象集合进行排序
我有一个C#自定义对象集合,它有一个属性名ISBN。我还有一个变量,它以列表的形式包含一些但不是所有的ISBN。我想对自定义对象集合进行排序,以便列表中的用户名先列出,然后再列出其他用户名。我做了如下的事情:如何基于列表对C#自定义对象集合进行排序,c#,linq,C#,Linq,我有一个C#自定义对象集合,它有一个属性名ISBN。我还有一个变量,它以列表的形式包含一些但不是所有的ISBN。我想对自定义对象集合进行排序,以便列表中的用户名先列出,然后再列出其他用户名。我做了如下的事情: var allBooks = GetAllBooks(); //First show the books popular among your friends followed by others from isbnList. var priorityList = allBooks.Whe
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;
基本上,首先我得到的是对应于列表的对象列表的子集,然后是其余的。然后我合并列表并返回整个列表。我不确定这样做是否正确。此外,我不确定,一旦合并,它将保留添加项目的顺序,还是将创建自己的顺序
谢谢您可以使用OrderBy(降序)
/然后使用bool
false
将在true
之前,因此要获得正确的顺序,您需要ORDERBYDENSCENDING
:
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();
您可以使用OrderBy(降序)
/ThenBy(降序)
和bool
false
将在true
之前,因此要获得正确的顺序,您需要ORDERBYDENSCENDING
:
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();
您可以使用OrderBy(降序)
/ThenBy(降序)
和bool
false
将在true
之前,因此要获得正确的顺序,您需要ORDERBYDENSCENDING
:
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();
您可以使用OrderBy(降序)
/ThenBy(降序)
和bool
false
将在true
之前,因此要获得正确的顺序,您需要ORDERBYDENSCENDING
:
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();
如果你不太多地改变集合并执行多次搜索,为了性能,你可以考虑保持它们的排序,这样你就可以做一个复杂的O(n)的过滤函数,而不是O(nm)或W/E的复杂性。对于性能,您可以考虑将其保持排序,并且可以对复杂性进行O(n)的筛选,而不是O(nm)或W/E的复杂性:<代码> OrderBy < /代码> IsIf如果您不改变集合,并多次执行搜索,以实现性能,你可以考虑保持它们的排序,你就可以对复杂度O(n)进行过滤函数,而不是O(nm)或W/E的复杂性:<代码> OrderBy < /代码> IsIf如果你不改变集合很多并且执行多次搜索,为了性能,你可以考虑保持它们的排序,你就可以用O(n)代替O(nm)或W/E的过滤函数。