我试图找到一种优雅的方法来对LINQ中的整数序列进行词法排序。换句话说,如果我有这些整数序列
我希望他们像这样排序出来
与字符排序字符串的基本思路相同,只是我想对一系列整数进行排序。我不想按字母顺序排序,但我确实希望对序列进行词汇排序。
答案 0 :(得分:1)
您可以将数字转换为字符串,将它们全部填充到相同的长度并将它们连接在一起,然后对其进行排序,最后再将它们拆分。
var intLists = new List<List<int>>
{
new List<int> { 7, 10, 12, 14, 15 },
new List<int> { 10, 12, 15 },
new List<int> { 10 },
new List<int> { 7, 15 },
new List<int> { 14, 15 },
};
var orderedLists = intLists
.Select(l => string.Join("", l.Select (x => x.ToString().PadLeft(10))))
.OrderBy(l => l)
.Select(l => l.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select (x => int.Parse(x)));