C# 第一订购人';s结果空字符串作为动态OrderBy中的最后一个
我有C# 第一订购人';s结果空字符串作为动态OrderBy中的最后一个,c#,linq,C#,Linq,我有列表ExcelData作为我的列表。 我可以使用LINQ的函数OrderBy然后By来订购ExcelData,并将EmptyStringsArlast函数添加到我从这个家伙那里找到的OrderBy()。 代码如下所示: ExcelData = ExcelData .OrderBy(arr => arr.Item1[2], new EmptyStringsAreLast()) .ThenBy(arr => arr.Item1[1]) .ThenBy(arr
列表ExcelData
作为我的列表。
我可以使用LINQ的函数OrderBy然后By来订购ExcelData
,并将EmptyStringsArlast
函数添加到我从这个家伙那里找到的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
),我无法找到任何可能的方法将emptyStringsArlast()
函数添加到第一个参数(Item1[2]ASC
)。()
有没有办法做到这一点
ExcelData = ExcelData.AsQueryable()
.OrderBy("'Item1[2] ASC, new EmptryStringsAreLast()', Item1[1] ASC, Item1[0] ASC")
.ToList();
看来我设法弄明白了。通过添加
String.IsNullOrWhiteSpace(Item1[2])
,它将null或空作为最后一个排序
像这个
ExcelData = ExcelData.AsQueryable()
.OrderBy("String.IsNullOrWhiteSpace(Item1[2]), Item1[2] ASC, Item1[1] ASC, Item1[0] ASC")
.ToList();
看来我设法弄明白了。通过添加
String.IsNullOrWhiteSpace(Item1[2])
,它将null或空作为最后一个排序
像这个
ExcelData = ExcelData.AsQueryable()
.OrderBy("String.IsNullOrWhiteSpace(Item1[2]), Item1[2] ASC, Item1[1] ASC, Item1[0] ASC")
.ToList();
由于
emptyStringsRalast()
不是动态的,您能否先执行动态部分,然后将emptyStringsRalast()
应用于结果?主题外,但我将创建一个自定义类型,而不是元组
,这样代码更易于阅读。那么我将使用列表
而不是列表
如果我使用它而不是这个列表
,我将如何从列表
中获益?编辑我认为这不是唯一的原因。我不认为应用EmptyStringsAreLast()
来获得结果会像在我的程序中那样有效,我想按3列排序。既然EmptyStringsAreLast()
不是动态的,你能不能先做动态部分,然后应用EmptyStringsAreLast())
to the result?Off-topic,但我会创建一个自定义类型,而不是Tuple
,这样代码更容易阅读。那么我将使用列表
而不是列表
如果我使用它而不是这个列表
,我将如何从列表
中获益?编辑我想这并不是唯一的原因。我不认为应用emptyStringsArlast()
生成结果会像在我的程序中那样有效,我想按3列排序。