我认为您想定义一个比较函数,您可以在其中确定列表中任何 2 个项目之间的排名。
int CompareObject1(Object1 left, Object1 right)
{
// TODO: cases where your items are null
// compare Property1 values
if (left.Property1)
{
if (right.Property1)
{
// items at same rank
return 0;
}
else
{
// left item is higher rank than right
return -1;
}
}
else if (right.Property1)
{
// right item is higher rank than left
return 1;
}
// Property1 doesn't indicate position, move along
// TODO: repeat for Property2
// Property2 doesn't indicate position, move along
// TODO: repeat for Property3
// if we get here, no determination can
// be made/don't bother to move anything
return 0;
}
返回值指示左侧或右侧对象是否应以 -1 或 1(或 0 表示偏好)排名更高。只要确保您涵盖所有条件。
那么你可以像这样使用它
List<Object1> foo = new List<Object1>() { <items...> };
foo.Sort(CompareObject1);
如果您的列表倒退,我可能会翻转比较函数中的符号。你的排序规则是矛盾的,所以我会让你对 Property2 和 Property3 进行排序。