【问题标题】:Sort a list of lists by minimum value按最小值对列表列表进行排序
【发布时间】:2017-11-14 09:59:31
【问题描述】:

我正在尝试按列表中的最小整数值对列表中的列表进行排序。这就是我目前所处的位置。

var SortedList = from lists in List 
                 orderby lists.List.Min(Min=>Min.value) 
                 ascending
                 select list ;

例如:

var x = new List<int>{ 5, 10, 4, 3, 0 };
var y = new List<int> { 4, -1, -5, 3, 2 };
var z = new List<int> { 3, 1, 0, -2, 2 };

var ListofLists = new List<List<int>> {x, y, z};

我的 Linq 的输出应该是按列表列表中的最小值对列表进行排序。在我的示例中,列表的顺序是:

y -> z -> x

我尝试了很多 linq 表达式并通过网络搜索。这个问题似乎很简单......感谢您的任何帮助!

【问题讨论】:

  • 出现重复怎么办?
  • 你在ListofLists的声明中多了一个List&lt;
  • 在我的应用程序中,没有最小重复次数。
  • 在可能的关系(重复元素)的情况下,这个问题变得更加复杂,特别是如果你想要一个有效的解决方案。

标签: c# list linq


【解决方案1】:

很简单:

var sorted = ListofLists.OrderBy(l => l.Min());

或者,如果你更喜欢查询语法,你应该这样做:

var sorted = from list in ListofLists 
             orderby list.Min()
             select list;

它正在运行:https://dotnetfiddle.net/bnfGOG

【讨论】:

  • 是否保证Enumerable.OrderBy() 只提取一次密钥?我在官方docs找不到任何东西。
  • @LeonidVasilyev 我也不是。但是在做了一些测试之后(将l.Min() 替换为{Console.WriteLine("."); return l.Min();}),它似乎是这样的。我在输出中得到的点与要排序的列表一样多(尝试使用 3、7 和 10 个列表)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 2021-06-06
  • 2017-10-04
  • 2019-02-13
  • 2018-08-11
  • 2018-10-02
  • 1970-01-01
相关资源
最近更新 更多