【发布时间】:2013-09-21 16:23:28
【问题描述】:
我有一个命名对象列表:
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。
输出列表:
- 一(2)
- Z (2)
- C (1)
- D (1)
- Z (1)
- 是 (3)
所以按名称排序,按布尔关系分组,按名称排序子组。
编辑:
以上是对实际排序的简化,在我的应用程序中,HasRelationship 函数确定两个方向是否对称。方向被命名,以便它们在编辑器界面中按逻辑顺序显示。
这是一个可视化:
【问题讨论】:
标签: c# .net arrays linq sorting