c# - 在 C# 中对嵌套字符串列表进行排序

标签 c# sorting

我想要实现的是一个按字母顺序排序的嵌套列表。

例如我的输入:

fat, twat, gat    //Line 1
cat, hat, bat     // Line 2
twat, lack, rat   // Line 3

我希望输出为:

bat, cat, hat    // Line 2
fat, gat, twat   // Line 1
lack, rat, twat  // Line 3

如您所见,列表首先在内部排序,然后在外部排序。

目前我的实现是使用嵌套列表:

List<List<String>> testSort;

我已经设法使用这种方法对内部列表进行排序:

    public static List<List<String>> sortList(List<List<String>> input)
    {
        input.ForEach(delegate (List<string> o)
        {
            o.Sort();
        });

        return input;
    }

我现在不确定如何在外部对列表进行排序。帮助将不胜感激!

提前致谢!

最佳答案

在每个内部列表已经排序后,您可以使用 OrderBy() 根据每个列表的第一个元素对外部列表进行排序:

input.ForEach(t => t.Sort());
input = input.OrderBy(t => t.First()).ToList();

为了回应下面的 M.kazem Akhgary 评论,如果您不仅希望根据第一个元素而且根据整个列表对外部列表进行排序,我只能想到这个解决方案。也许其他人有更好的解决方案。

input.ForEach(t => t.Sort());
input.Sort((e1, e2) => {
    for (int i = 0; i < e1.Count; i++)
    {
        if(e1[i] != e2[i])
        {
            return e1[i].CompareTo(e2[i]);
        }
    }

    return 0;
});

关于c# - 在 C# 中对嵌套字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32547077/

相关文章:

c# - 如何在查询中传递字符串

c# - 无法从使用自定义运行时在 Docker 中运行 .NET Core 应用程序的 App Engine 连接到 Google Cloud SQL 中的 postgres

c# - 使用 Entity Framework 更新对象的所有字段

c# - LINQ to Entities 根据客户端输入对表达式进行排序

java - 使用二维数组排序

c# - linq to xml 中标记的内容

c# - 使用 C# 代码 (ASP.net) 选择 CSS 样式

c - 冒泡排序C语言

c++ - 无法使用有符号/无符号不匹配的 sort() 算法/错误

sorting - Google 电子表格,如何在整个工作表中搜索相同的匹配项并返回位于它们右侧的值?