我有一个命名对象列表:
class NamedObject {
public string name;
public int value;
public NamedObject(string name, int value) {
this.name = name;
this.value = value;
}
}
...
public static bool HasRelationship(NamedObject a, NamedObject b) {
return a.value == b.value;
}
...
var objs = new List<NamedObject>();
objs.Add(new NamedObject("D", 1));
objs.Add(new NamedObject("Z", 2));
objs.Add(new NamedObject("Y", 3));
objs.Add(new NamedObject("A", 2));
objs.Add(new NamedObject("C", 1));
objs.Add(new NamedObject("Z", 1));
我想按名称排序,然后按布尔关系进行子排序。就本例而言,布尔关系是a.value == b.value
。
输出列表:
- A2)
- Z (2)
- C (1)
- D (1)
- Z (1)
- 是 (3)
所以按名称排序,按布尔关系分组,按名称排序子组。
编辑:
以上是对实际排序的简化,在我的应用程序中,该HasRelationship
函数确定两个方向是否具有对称性。方向被命名,以便它们在编辑器界面中以逻辑顺序出现。
这是一个可视化: