c# - 根据另一个列表 ID 对列表进行排序

标签 c# linq sorting collections

我有一个包含如下标识符的列表:

List<long> docIds = new List<long>() { 6, 1, 4, 7, 2 };

此外,我还有另一个列表 <T>项目,由上述 id 表示。

List<T> docs = GetDocsFromDb(...)

我需要在两个集合中保持相同的顺序,以便 List<T> 中的项目必须与第一个位置相同(由于搜索引擎评分原因)。而这个过程不能在GetDocsFromDb()中完成功能。

如有必要,可以将第二个列表更改为其他结构(例如 Dictionary<long, T>),但我不想更改它。

是否有任何简单有效的方法来使用 LINQ 执行此“取决于某些 ID 的排序”?

最佳答案

docs = docs.OrderBy(d => docsIds.IndexOf(d.Id)).ToList();

关于c# - 根据另一个列表 ID 对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15275269/

相关文章:

c# - 为什么我的 DLL 只为一个用户注册?

c# - 有没有办法判断哪个 EventLog 导致了 C# 中的 EntryWritten 事件?

c# - 复杂的 Linq C# 查询

linq - 我怎样才能 'walk' LINQ 中表之间的关系?

c# - 列出我电脑上的所有文件并按大小排序

c - 在 C 中从低到高对数组进行排序(不使用 qsort)

c# - Cron 可观察序列

c# - 在连接到 CRM 的 LINQ 表达式中排除数组

c# - 谁是所有字符串中最伟大的?

c# - 如何更改 asp.net mvc 中搜索 viewLocation 的顺序?