我想要实现的是按字母顺序排序的嵌套列表.
我的输入:
fat, twat, gat //Line 1
cat, hat, bat // Line 2
twat, lack, rat // Line 3
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
bat, cat, hat // Line 2
fat, gat, twat // Line 1
lack, rat, twat // Line 3
Run Code Online (Sandbox Code Playgroud)
如您所见,列表首先在内部排序,然后在外部排序.
我目前的实现是使用嵌套列表:
List<List<String>> testSort;
Run Code Online (Sandbox Code Playgroud)
我已设法使用此方法对内部列表进行排序:
public static List<List<String>> sortList(List<List<String>> input)
{
input.ForEach(delegate (List<string> o)
{
o.Sort();
});
return input;
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何在外面对列表进行排序.帮助将不胜感激!
提前致谢!
在每个内部列表已经排序后,您可以使用OrderBy()根据每个列表的第一个元素对外部列表进行排序:
input.ForEach(t => t.Sort());
input = input.OrderBy(t => t.First()).ToList();
Run Code Online (Sandbox Code Playgroud)
为了回应下面的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;
});
Run Code Online (Sandbox Code Playgroud)