我有List<Tuple<string[], SolidColor>> ExcelData
作为列表。
我可以使用LINQ的OrderBy和ThenBy函数对ExcelData
进行订购,并将EmptyStringsAreLast
函数添加到我从这个人(https://stackoverflow.com/a/14641992/11848085)找到的OrderBy中。
代码如下:
ExcelData = ExcelData
.OrderBy(arr => arr.Item1[2], new EmptyStringsAreLast())
.ThenBy(arr => arr.Item1[1])
.ThenBy(arr => arr.Item1[0])
.ToList();
只要我不想使用动态OrderBy,就可以使用。如果我像这样使用动态OrderBy(这个需要System.Linq.Dynamic
或System.Linq.Dynamic.Core
),我将无法找出将EmptyStringsAreLast()
函数添加到第一个参数的任何方法( Item1[2] ASC
)。 (https://stackoverflow.com/a/8660293)
ExcelData = ExcelData.AsQueryable()
.OrderBy("Item1[2] ASC, Item1[1] ASC, Item1[0] ASC")
.ToList();
有没有办法做这样的事情?
ExcelData = ExcelData.AsQueryable()
.OrderBy("'Item1[2] ASC, new EmptryStringsAreLast()', Item1[1] ASC, Item1[0] ASC")
.ToList();
答案 0 :(得分:0)
好像我设法弄清楚了。通过添加String.IsNullOrWhiteSpace(Item1[2])
,它将最后一个排序为null或空。
喜欢这个
ExcelData = ExcelData.AsQueryable()
.OrderBy("String.IsNullOrWhiteSpace(Item1[2]), Item1[2] ASC, Item1[1] ASC, Item1[0] ASC")
.ToList();