c# - 将排序列添加到列表 C#

标签 c# linq list sorting dictionary

我构建了一个 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/

相关文章:

C# linq lambda 连接和选择语法

python - 在文件名中创建一个以空格分隔的选定字符列表

c# - 抽象类可以继承另一个抽象类c#

c# - 在 .NET 中,有什么方法可以测试 Async Lock,以证明重入已被阻止?

c# - Dynamics CRM 2011 - LINQ - 检索客户和联系人之间的连接

C# Linq 合并两个字典

C++在遍历列表时从列表中删除

list - 如何从两个已经排序的列表中创建一个排序列表

c# - AvalonDock-如何为所有 anchor 禁用自动隐藏功能

c# - 如何将不同的对象存储在一个列表中