我有一个字符串列表:
6, 5, 11, 1, 10, 3, NULL, NULL
我需要一个LINQ查询来排序/命令,所以我得到了这个:
1, 5, 6, 10, 11, NULL, NULL
我不想转换列表。这几乎有效:
list myList = myList.OrderBy(x => int.Parse(x)).ToList();
但是NULL会打破它。我确信这很容易,但TIA。
答案 0 :(得分:1)
list myList = myList.Where(item=>item!=null).OrderBy(x => int.Parse(x)).ToList();
OR
list myList = myList.OrderBy(x => int.Parse(x ?? 0)).ToList();
答案 1 :(得分:0)
string[] xs = new[] { "6", "5", "11", "1", "10", "3", null, null };
IOrderedEnumerable<string> myList = xs.OrderBy(x => int.Parse(x ?? $"{int.MaxValue}")).ToList();
如果你希望null
在数字之后只使用max int值。由于您的值类型为string
,因此请使用插值字符串将int.MaxValue
作为字符串传递。
??
时, null
返回右表达式。
插值字符串非常简洁.Net功能:https://msdn.microsoft.com/en-us/library/dn961160.aspx。
您还可以在查询中使用string.IsNullOrEmpty
,string.IsNullOrWhiteSpace
或int.TryParse
然后int.Parse
,具体取决于您的数据,以确保成功解析(因此订购所有元素。