我知道有很多问题和答案,但都不适用于我的问题。我有一个锯齿状数组,我想按数组 b、c 和 d 中的值排序:
string[][] toBeSorted = new string[][] { a, b, c, d, e, f, g, h, i, j};
这仅按“行”排序
toBeSorted = toBeSorted.OrderBy(inner => inner[2]).ToArray();
我已经尝试过 Array.Sort(c.ToArray(), b)
和类似的方法,但是在多值排序的情况下它们混合了整个选择
所以现在当我在 toBeSorted
中有值时,比如“John”、“Smith”、“New York”等。
我希望我的数组按“城市”、“姓氏”排序,例如最后按数组 g
中的值排序。所以值是 a = 名字,b = 姓氏,等等。
我的场景依赖 .NET 3.5。
谢谢。
最佳答案
不是使用 string[][]
,其中内部数组中的每个项目实际上代表不同的数据“标签”,而是创建一个适当的类,其属性是那些“标签”:
public class Person
{
public string Name { get; set; }
public string LastName { get; set; }
public string City { get; set; }
}
然后:
var people = new List<Person>
{
new Person { Name = "A", LastName = "1", City = "B" },
new Person { Name = "B", LastName = "3", City = "B" },
new Person { Name = "C", LastName = "2", City = "B" },
};
//Linq OrderBy:
var result = people.OrderBy(p => p.LastName);
//List Sort:
people.Sort((x, y) => string.Compare(x.LastName, y.LastName));
关于c# - 按多列对 C# 中的锯齿状数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362049/