c# - 将元素列表与另一个双打列表排序
问题描述
我正在使用 Revit API,我有两个列表,一个是 Elements,另一个是 Doubles,这些 doubles 是从这些元素位于 Z 轴上的 pointXYZ 提取的。我需要使用双列表对元素列表进行排序,并且需要使用其他列表,如曲线、点。
我尝试了 OrderBy,但无法理解如何将另一个列表作为第一个列表的关键。
举个例子:
List<Elements> listElements = {ele1, ele2, ele3, ele4}
List<double> listDouble = {4.25, 3.2, 5.2, 2.0}
我需要一个像这样的输出:
List<Elements> newListElements = {ele4, ele2, ele1, ele3}
解决方案
你可以这样使用字典
Dictionary<Elements, double> dic = new Dictionary<Elements, double>();
for (int i = 0; i < listDouble.Count; i++)
{
dic.Add(listElements[i],listDouble[i]);
}
var newListElements=dic.OrderBy(x => x.Value).Select(x=>x.Key).ToList();
推荐阅读
- ios - 不同的视图颜色会导致 Scrollview 中的抖动
- amazon-web-services - 使用由 createbucket 事件触发的此 lambda 函数出现错误
- python - NumberPlane 和 GraphScene 坐标的 Manim 差异
- docker - 无法将 docker 映像推送到 nexus 存储库
- python - Pandas value_counts(normalize=True) 给出 'IntegerArray' 对象没有属性 'sum'
- excel - 从选定的工作簿复制和粘贴带有特定文本的行
- php - 选择子菜单时的活动导航项(无 js)
- python - 无法使用 PyGithub/PullRequest.create_review() 创建多行评论
- excel - 根据两个单元格中的输入隐藏列
- flutter - 异步接收器完成后如何更新小部件?