我想根据参考文献和姓名对该列表进行排序
我应该输入什么而不是&&
?
list.Sort((x, y) => x.ref.CompareTo(y.ref) && x.name.CompareTo(y.name));
答案 0 :(得分:2)
使用LINQ:
var sorted = list.OrderBy(x => x.ref).ThenBy(x => x.name);
答案 1 :(得分:1)
CompareTo
得出-1、0或1。负数表示“第一个值小于第二个值”,0表示“两个值相等”,正数表示“第一个值大于第二个值” ”。所以您可以简单地与
list.Sort((x, y) => 2 * x.ref.CompareTo(y.ref) + x.name.CompareTo(y.name));
通过将ref
的排序顺序乘以2来赋予优先级。只有当refs相等时,名称才有机会确定符号。
如果您想先按名称排序
list.Sort((x, y) => x.ref.CompareTo(y.ref) + 2 * x.name.CompareTo(y.name));
答案 2 :(得分:0)
如果要使用该语法先按引用先排序,然后再按名称排序,则如下所示:
list.Sort((x,y)=> {
var comp = x.ref.CompareTo(y.ref);
if (comp == 0)
return x.name.CompareTo(y.name);
else
return comp;
});
这个想法是,只有在ref相等时才比较名称。