我构建了一个 List <MyObject>
它有一个特定顺序的对象集合,但在此列表中,我想管理一种由我自己创建的 SORT 列。
我的意思是,例如我想手动枚举 10 个对象; 2 前 7 个依次从 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
来做到这一点? (我希望)我可以使用什么类型的列表?
编辑
我想做的是收集要保存在数据库中的对象,但它们需要按顺序排列(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/