c# - C# 中基于另一个浮点列表的排序列表

标签 c# linq sorting

给出以下 C# 中的两个列表:

List<string> X = new List<string>({    "a",    "b",    "c",    "d",    "e",    "f",    "g", "h",  "i"});
List<float>  Y = new List<float> ({ 0.991f, 1.471f, 3.819f, 0.003f, 2.291f, 2.887f, 2.887f,   0, 1.0f});

使用 Y 中的浮点值对 X 进行排序以获得以下输出的最干净/最短的方法是什么?

"h", "d", "a", "i", "b", "e", "f", "g", "c"

具有相同 float “key”的元素的顺序并不重要。

最佳答案

如果每个字符串键都是唯一的并且每个列表都完全匹配,则可以使用 System.Reactive 中的 zip 将它们用作字典中的键。

var dic = X.Zip(Y, (k, v) => new { k, v })
          .ToDictionary(x => x.k, x => x.v);

现在,按值对新形成的字典进行排序。

var sortedDict = from entry in dic orderby entry.Value ascending select entry;

在使用查询语法的“一行”中,这将变为:

var dic = X.Zip(Y, (k, v) => new { k, v })
          .ToDictionary(x => x.k, x => x.v);
          .OrderBy(x => x.Value);

关于c# - C# 中基于另一个浮点列表的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28058715/

相关文章:

c# - 使用 REST Web 服务 API 在 MVC3 应用程序中进行对象映射

c# - 使用联锁用法

javascript - 如何在 mvc 5 上使用 cdn javascript 文件

c# - 异常处理(任务并行库).Net Framework 4.0 Beta 2

c# - MVC LINQ动态排序通过获取列类型

c# - 如何将 ISortedEnumerable<XElement> 添加到 XElement?

c# - 单个 LINQ to SQL 查询中的 SUM 和 COUNT

python - 是否有用于字符串自然排序的内置函数?

ruby - ruby 中的字母拓扑排序

c++ - 如何生成用于测试快速排序最佳案例的数组?