我构建了一个List <MyObject>,它具有特定顺序的对象集合,但是在此列表中,我想管理一种SORT列,但由我自己创建。

我的意思是,例如,我想手动枚举10个对象; 2前1个从1到7依次排列,后3个从8到10依次乘以-1,所以最后我将得到列表

List[0] {1, obj1}
List[1] {2, obj2}
List[2] {3, obj3}
List[3] {4, obj4}
List[4] {5, obj5}
List[5] {6, obj6}
List[6] {7, obj7}
List[7] {-8, obj8}
List[8] {-9, obj9}
List[9] {-10, obj10}


然后,最后我可以对其进行排序(升序),然后得到-10, -9, -8, 1, 2, 3, 4, 5, 6, 7

有没有一种方法可以避免这么多循环,并且可以使用linq(我希望如此)进行操作,我可以使用哪种类型的列表?

编辑

我想做的是收集要保存在db中的对象,但是它们需要按顺序(FK)进行操作,但是如果我知道要删除其中的3个,则它们必须处于正确的顺序以避免FK冲突。所以我认为这是最好的事情。有什么建议吗?

最佳答案

您可以在列表上使用方便命名的Sort方法:

var list = new List<MyType>() { ... };
list.Sort((x, y) => x.Prop1.CompareTo(y.Prop1));


或者,如果这实际上不是List<T>而是其他IEnumerable<T>类型,请改用Linq的OrderBy扩展方法:

var unordered = ...
var ordered = unordered.OrderBy(x => x.Prop1);

关于c# - 将排序列添加到列表C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19866894/

10-12 12:44