C# 按字典顺序排序的字符串列表

C# 按字典顺序排序的字符串列表,c#,list,sorting,C#,List,Sorting,目前,我正在尝试实现一个生成频繁序列的代码。在这样做时,我需要获得一个适当的字符串列表排序,如下所示: List<List<string>> myList = new List<List<string>>(); List<string> input1 = new List<string>() {"a", "b", "d"}; List<string> input2 = new List<string>

目前,我正在尝试实现一个生成频繁序列的代码。在这样做时,我需要获得一个适当的字符串列表排序,如下所示:

List<List<string>> myList = new List<List<string>>();
List<string> input1 = new List<string>() {"a", "b", "d"};
List<string> input2 = new List<string>() {"a", "b", "c"};
myList.Add(input1);
myList.Add(input2);
我曾尝试使用
myList.Sort()
,但它引发了
System.invalidoOperationException

我对LINQ不太在行,所以我没有使用过任何类似的方法。

如果您想使用
sort()
解决问题,可以使用这种方法

myList.Sort((x, y) => x.Zip(y,(l1,l2) => string.Compare(l1,l2)).FirstOrDefault(c => c != 0));

否则,我会将所有项目具体化为一个
字符串
,并进行比较

由于必须首先创建字符串对象,因此效率较低

 myList = myList.OrderBy(string.Concat).ToList();
示例:

如何:

myList = myList.OrderBy(s => string.Join(string.Empty, s)).ToList();

诀窍是根据子列表中每个元素的串联所产生的字符串进行排序

您可以尝试以下代码:

        List<string> input1 = new List<string>() { "a", "b", "d" };
        List<string> input2 = new List<string>() { "a", "b", "c" };

        //Instead of adding input as List<string>, add it as string
        string delimiter = ",";
        var input1Str = input1.Aggregate((i, j) => i + delimiter + j);
        var input2Str = input2.Aggregate((i, j) => i + delimiter + j);

        var myListStr = new List<string>();
        myListStr.Add(input1Str);
        myListStr.Add(input2Str);

        myListStr.Sort();
        //Now you can convert it into List<List<string>>
        List<List<string>> myList = myListStr.Select(x => x.Split(',').ToList()).ToList();
List input1=newlist(){“a”、“b”、“d”};
List input2=新列表(){“a”、“b”、“c”};
//不要将输入添加为列表,而是将其添加为字符串
字符串分隔符=“,”;
var input1Str=input1.Aggregate((i,j)=>i+分隔符+j);
var input2Str=input2.Aggregate((i,j)=>i+分隔符+j);
var myListStr=新列表();
myListStr.Add(input1Str);
myListStr.Add(input2Str);
myListStr.Sort();
//现在您可以将其转换为列表
List myList=myListStr.Select(x=>x.Split(',').ToList()).ToList();
您也可以使用

myList = myList.OrderBy(arr => arr[0])
                .ThenBy(arr => arr[1])
                .ThenBy(arr => arr[2])
                .ToList();

发生异常的堆栈跟踪和行可能会有所帮助。
myList = myList.OrderBy(arr => arr[0])
                .ThenBy(arr => arr[1])
                .ThenBy(arr => arr[2])
                .ToList();