Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于列表对C#自定义对象集合进行排序_C#_Linq - Fatal编程技术网

如何基于列表对C#自定义对象集合进行排序

如何基于列表对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

我有一个C#自定义对象集合,它有一个属性名ISBN。我还有一个变量,它以列表的形式包含一些但不是所有的ISBN。我想对自定义对象集合进行排序,以便列表中的用户名先列出,然后再列出其他用户名。我做了如下的事情:

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的过滤函数。