gpt4 book ai didi

c# - Linq 对 Null 值进行排序

转载 作者:行者123 更新时间:2023-11-30 19:54:58 24 4
gpt4 key购买 nike

我有一个具有一个字符串属性的类,它有时可以为空,有时可以是整数,也可以是字符串。

我想基于此属性使用 LINQ 对整数值进行升序排序,然后是所有非整数值,最后是空值

我如何制作一个处理场景的 LINQ 表达式

例子

"1" ,NULL , "34", "6" ,"67",NULL ,"r45","j34" ,"s"  to be sorted as 

"1" "6" "34" "67" "j34" "r45" "s" NULL NULL

我试过类似的东西但不是很完美答案是

var licenseitems_master =  my master list 
var firstPart = licenseitems_master.Where(x => !String.IsNullOrEmpty(x.Page) && x.Page.All(char.IsDigit)).OrderBy(x => Convert.ToInt32(x.Page));
var secondPart = licenseitems_master.Where(x => !String.IsNullOrEmpty(x.Page) && !x.Page.All(char.IsDigit)).OrderBy(x => x.Page);
var thirdPart = licenseitems_master.Where(x => String.IsNullOrEmpty(x.Page)).ToList();
var sorted_items = firstPart.Union(secondPart).Union(thirdPart).ToList();

我们可以将其作为单个 LINQ 表达式吗?

最佳答案

在这种情况下,典型的方法是首先按某些优先级表达式排序,然后按其他表达式排序(仅对同等优先级有效)。在您的场景中,它可能是这样的:

var sorted_items =
(from x in licenseitems_master
let pageOrder = string.IsNullOrEmpty(x.Page) ? 2 : x.Page.All(char.IsDigit) ? 0 : 1
orderby pageOrder, pageOrder == 0 ? Convert.ToInt32(x.Page) : 0, x.Page
select x).ToList();

关于c# - Linq 对 Null 值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com