D P*_* P. 1 c# arrays sorting list
我已将以下值添加到我的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
Run Code Online (Sandbox Code Playgroud)
我是C#的新手,请告诉我一个例子,如果可能的话
简单回答:
matrix.OrderBy( l => l[0]);
Run Code Online (Sandbox Code Playgroud)
好吧,这是一个非常糟糕的设计,首先是因为字符串比较不会给你一个double比较相同的顺序.很容易修复:
matrix.OrderBy( l => double.Parse(l[0]));
Run Code Online (Sandbox Code Playgroud)
如果您输入的数字不正确(并且无法解析为double),它将抛出异常.你真正想做的是创建一个"Fruit"对象:
class Fruit
{
public string Name { get; set; }
public double Weight { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并持有一个List<Fruit>.现在你可以写:
matrix.OrderBy(f => f.Weight);
Run Code Online (Sandbox Code Playgroud)
没有异常问题,因为如果你写错了会得到编译时错误.
OrderBy返回一个IEnumerable,因此请确保使用返回值而不是matrix打印时
| 归档时间: |
|
| 查看次数: |
2572 次 |
| 最近记录: |