我有一个根据条件任意排序的集合。我的类有一个“Ordinal”int属性,我想在收集订单后动态填充。以下是我到目前为止的情况:
var result = new List<MyClass>();
foreach (var x in items)
{
x.TestA = x.TestA;
x.TestB = x.TestB;
x.TestC = x.TestC;
}
...
var ordered = result.AsEnumerable();
if (...) ordered.OrderBy(x => x.TestA);
else if (...) ordered.OrderBy(x => x.TestB);
else if (...) ordered.OrderBy(x => x.TestC);
...
return ordered.ToList()
在返回有序列表之前,使用索引位置填充集合中“MyClass”对象的“Ordinal”属性的最佳方法是什么?因为我有数千条记录,所以我不愿意在最后创建另一个循环。这是唯一的方法吗?感谢您的帮助或建议。
答案 0 :(得分:1)
我看不到任何其他方式,然后再次迭代排序集合。您可以使用LINQ使其看起来更好,但它仍然会在内部进行迭代:
return ordered.Select((x, i) => { x.Ordinal = i; return x; }).ToList()
仅当您的MyClass
确实是参考类型(class
)时,它才有效。