c# - 与 C# 中的现有列表相比,如何对列表进行排序?

标签 c# linq list sorting

我有一个 List<int> allIDs包含原始顺序的 ID 列表。我正在创建一个元素选择器,它允许用户从这个列表中添加和删除 ID 到另一个 List<int> selectedIDs .现在,我已经准备好并开始工作了,但是每当用户删除并稍后添加相同的元素时,它只会添加到列表的末尾 ( selectedIDs.Add( id ) )。

我想将元素插入其原始位置,使用 allIDs作为对过去位置的引用。

以下是列表的一些摘录,以将其全部放在上下文中:

List<int> allIDs = new List<int> {10, 11, 9, 155, 12, 299, 15...};
List<int> selectedIDs = new List<int> { 10, 9, 155, 299, 15... }

现在假设我从 selectedIDs 中删除了 id=299 -list,以便稍后尝试再次添加它。如何将其插入 155 之间和 15 ?我知道我可以使用 list.Insert(obj, index) 插入列表中的任何位置方法,但我如何以最简单的方式以编程方式执行此操作?

最佳答案

如果我正确理解了您的要求:

var ordered = selectedIDs.OrderBy(sID => allIDs.IndexOf(sID));

这将按照原始完整列表中每个 ID 的索引对选定 ID 的列表进行排序。

关于c# - 与 C# 中的现有列表相比,如何对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230764/

相关文章:

c# - C# 中的意外 Regex.Match 结果

c# - 将 C# 字符串分析为不同的变量

c# - 带有 ModelBinder 的 Swashbuckle 和 Web Api 方法

c# - 如何计算 Linq 查询中一系列整数的运行总和?

python - 获取列表和元组列表的交集

c# - 使用 Entity Framework ,我如何反射(reflect)多对多关系并将存在的实体添加到正在创建的新实体?

c# - LINQ:从类型 T 的列表中,仅检索某个子类 S 的对象

c# - 带键的 LINQ groupby 语句

python - 删除列表的许多元素(python)

c# - 从 C# List<object> 中获取重复项