按特定维度对数组列表进行排序很简单:
var test = new List<float[]>
{
new[] {0.0f, 0.0f},
new[] {0.0f, 0.25f},
new[] {0.25f, 0.25f},
new[] {1f, 1f},
new[] {0.25f, 0.75f},
new[] {1f, 1f},
new[] {0.0f, 0.0f},
};
test = test
.OrderBy(arr => arr[1])
.ToList();
我遇到这些数组包装在对象/类中的情况:
public class TestClass
{
public TestClass(float[] array)
{
SomeArray = array;
}
public float[] SomeArray { get; set; }
}
我想对这些对象的列表进行排序:
var X = new List<TestClass>
{
new TestClass(new[] {0.0f, 0.0f}),
new TestClass(new[] {0.0f, 0.25f}),
new TestClass(new[] {0.25f, 0.25f}),
new TestClass(new[] {1f, 1f}),
new TestClass(new[] {0.25f, 0.75f}),
new TestClass(new[] {1f, 1f}),
new TestClass(new[] {0.0f, 0.0f}),
};
按给定维度(例如,在此方案中为0或1)。请注意,我已经将TestClass的CompareTo用于其他目的。有什么想法吗?
答案 0 :(得分:2)
显而易见的方法是查看对象:
var dim = 0;
var sorted = (from x in X
orderby x.SomeArray[dim]
select x
).ToList();
(使用各种比较/相等接口之一的实现不能提供参数化排序的能力。)
答案 1 :(得分:0)
X = X
.OrderBy(i => i.SomeArray[1])
.ToList();