Ahm*_*mad 2 c# linq sorting list
我有一个字符串列表列表
List<string> l1 = new List<string>();
l1.Add("i");
l1.Add("k");
List<string> l2 = new List<string>();
l2.Add("f");
l2.Add("a");
pChain = new List<List<string>>();
pChain.Add(l1);
pChain.Add(l2);
...
Run Code Online (Sandbox Code Playgroud)
我想pChain根据每个列表的第一项进行排序(结果应该是l2,l1).
我试过pChain.Sort();但发生异常
mscorlib.dll中发生了未处理的"System.InvalidOperationException"类型异常
附加信息:无法比较阵列中的两个元素.
Zei*_*kki 11
默认调用pChain.Sort()无法预测您要按第一个元素排序,您需要明确指定:
pChain.Sort((x, y) => String.Compare(x.FirstOrDefault(), y.FirstOrDefault()));
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用Linq的OrderBy(根据文档,这是一种稳定的排序):
pChain = pChain.OrderBy( x => x.FirstOrDefault()).ToList();
Run Code Online (Sandbox Code Playgroud)
该方法执行稳定的排序; 也就是说,如果两个元素的键相等,则保留元素的顺序.相反,不稳定的排序不会保留具有相同键的元素的顺序.
你得到那个错误,因为C#不知道如何pChain为你排序一个项目,因为它是一个IEnumerable属于你自己的项目.
你想要按Max项目排序吗?或者通过Count物品?或许多其他物品
你应该为它提供一些规则来比较,IComparable<List<string>>或者:
pChain = pChain.OrderBy(item => item.FirstOrDefault());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |