Jon*_*eet 113
那么,使用LINQ最简单的方法是这样的:
list = list.OrderBy(x => x.AVC ? 0 : 1)
.ToList();
Run Code Online (Sandbox Code Playgroud)
要么
list = list.OrderByDescending(x => x.AVC)
.ToList();
Run Code Online (Sandbox Code Playgroud)
我相信bool价值的自然顺序是false < true,但第一种形式使IMO更清晰,因为每个人都知道0 < 1.
请注意,这不会对原始列表本身进行排序 - 它将创建一个新列表,并将引用分配回list变量.如果要进行排序,则应使用该List<T>.Sort方法.
Ani*_*Ani 17
像这样?
在LINQ中:
var sortedList = originalList.OrderBy(foo => !foo.AVC)
.ToList();
Run Code Online (Sandbox Code Playgroud)
或就地:
originalList.Sort((foo1, foo2) => foo2.AVC.CompareTo(foo1.AVC));
Run Code Online (Sandbox Code Playgroud)
正如Jon Skeet所说,这里的诀窍是知道false被认为比'更小'true.
如果您发现在代码中的许多不同位置执行这些排序操作,您可能希望获得类型Foo来实现IComparable<Foo>和IComparable接口.
Guf*_*ffa 10
我假设你希望它们按其他东西排序,以便在AVC相同的所有项目之间获得一致的排序.例如按名称:
var sortedList = list.OrderBy(x => c.AVC).ThenBy(x => x.Name).ToList();
Run Code Online (Sandbox Code Playgroud)