我在我的2D列表(列表列表)中添加了以下值。它包含水果的重量以及其名称。您能告诉我如何根据权重的第一个索引值对2D数组排序吗?
List<List<String>> matrix = new List<List<String>>();
matrix.Add(new List<String>()); //Adds new sub List
matrix[0].Add("3.256");
matrix[0].Add("Apple");
matrix.Add(new List<String>());
matrix[1].Add("1.236");
matrix[1].Add("Orange");
matrix.Add(new List<String>());
matrix[2].Add("1.238");
matrix[2].Add("Banana");
matrix.Add(new List<String>());
matrix[2].Add("2.658"); //updated This should be matrix[3] instead of 2
matrix[2].Add("Apple");
....
...
..
Console.WriteLine(matrix[0][0]);//This prints out the value 3.256. after sorting it should print out 1.236
我是C#的新手,如果有可能,请举例说明
最佳答案
简单答案:
matrix.OrderBy( l => l[0]);
好的,这是一个非常糟糕的设计,首先是因为字符串比较不会为您提供
double
比较的顺序。易于修复:matrix.OrderBy( l => double.Parse(l[0]));
除非现在输入错误,否则它将引发异常(并且无法将其解析为双精度)。您真正想要做的是创建一个“水果”对象:
class Fruit
{
public string Name { get; set; }
public double Weight { get; set; }
}
并按住
List<Fruit>
。现在您可以编写:matrix.OrderBy(f => f.Weight);
不会有任何异常问题,因为如果写错了,您将得到一个编译时错误。
OrderBy返回一个IEnumerable,因此请确保在打印时使用返回值而不是
matrix
关于c# - 根据第一个索引值对二维列表进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26197230/