可以像这样使用LINQ OrderBy吗:
.OrderBy(x=>(x.SourceID == 3), (x.SourceID == 2), (x=>x.SourceID == 4), (x.SourceID == 1)).ToList();
所以它会按3、2、4、1的顺序对它们进行排序吗?
可以像这样使用LINQ OrderBy吗:
.OrderBy(x=>(x.SourceID == 3), (x.SourceID == 2), (x=>x.SourceID == 4), (x.SourceID == 1)).ToList();
var sortOrder = new List<int> {3, 2, 4, 1};
var result = bop.OrderBy(x=> sortOrder.IndexOf(x.SourceID)).ToList();
如果您想将其扩展到对未知项执行特殊操作(它们现在首先出现),您只需创建一个方法来确定排序顺序并使用该方法即可。
public static class ListExtensions
{
public static List<Source> SortByCustomOrder(this List<Source> list, List<int> sortOrder)
{
return list.OrderBy(x => sortOrder.IndexOf(x.SourceId)).ToList();
}
}
将“Source”替换为您的类名,“x.SourceId”替换为您的属性名。
用法:
// the sort order
var sortOrder = new List<int> { 3, 2, 4, 1, 6, 5 };
var results = sources.SortByCustomOrder(sortOrder);
OrderBy
有这样的扩展。 - BastardoThenBy
吗?请查看https://dev59.com/z3VC5IYBdhLWcg3wbgdS#298741。你想做的基本上是“LINQ中的多重排序”,不是吗?请查看https://dev59.com/z3VC5IYBdhLWcg3wbgdS。 - Bastardo