c# - 按多列对 C# 中的锯齿状数组进行排序

标签 c# .net arrays sorting

我知道有很多问题和答案,但都不适用于我的问题。我有一个锯齿状数组,我想按数组 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/

相关文章:

javascript - 检查数组中的任何对象是否包含另一个数组中列出的属性

c# - 单击图片框时获取 PixelValue

c# - 如何在 caSTLe-windsor 的 xml 配置中配置通用类型参数?

.net - 使用依赖注入(inject),我发现自己创建了工厂来进行单元测试。这是正常的吗?

c - 我对 C 中的数组有疑问(Hackerearth - 查找产品)

python - 使用 Python 将对象数组转换为数组数组

c# - 从调整大小的图像中翻译/检测图像的矩形部分

c# - 如何在 C# 中实现通用堆栈?

c# - 在 c#.net 中使用字符串

c# - SQL 字符串或二进制数据将被截断,列名