LINQ 查询对带有 NULL 的数字字符串列表进行排序
LINQ query to sort list of numeric strings with NULLs
我有一个字符串列表:
6, 5, 11, 1, 10, 3, NULL, NULL
我需要一个 LINQ 查询到 sort/orderby 所以我得到了这个:
1, 5, 6, 10, 11, NULL, NULL
我不想转换列表。这几乎可以工作:
list myList = myList.OrderBy(x => int.Parse(x)).ToList();
但是 NULL 破坏了它。我敢肯定这很容易,但是 TIA。
- 使用 C#
你有没有可能只是尝试这样的事情:
list myList = myList.Where(item=>item!=null).OrderBy(x => int.Parse(x)).ToList();
或
list myList = myList.OrderBy(x => int.Parse(x ?? 0)).ToList();
string[] xs = new[] { "6", "5", "11", "1", "10", "3", null, null };
IOrderedEnumerable<string> myList = xs.OrderBy(x => int.Parse(x ?? $"{int.MaxValue}")).ToList();
正如您希望 null
s 在数字之后一样,在这种情况下仅使用最大 int 值。由于您的值类型是 string
然后使用内插字符串将 int.MaxValue
作为字符串传递。
??
returns 右表达式,当左表达式的计算结果为 null
.
时
内插字符串非常整洁 .Net 功能:https://msdn.microsoft.com/en-us/library/dn961160.aspx。
您还可以在查询中使用 string.IsNullOrEmpty
、string.IsNullOrWhiteSpace
或 int.TryParse
然后 int.Parse
,以确保成功解析 (并因此排序)所有元素。
我有一个字符串列表:
6, 5, 11, 1, 10, 3, NULL, NULL
我需要一个 LINQ 查询到 sort/orderby 所以我得到了这个:
1, 5, 6, 10, 11, NULL, NULL
我不想转换列表。这几乎可以工作:
list myList = myList.OrderBy(x => int.Parse(x)).ToList();
但是 NULL 破坏了它。我敢肯定这很容易,但是 TIA。
- 使用 C#
你有没有可能只是尝试这样的事情:
list myList = myList.Where(item=>item!=null).OrderBy(x => int.Parse(x)).ToList();
或
list myList = myList.OrderBy(x => int.Parse(x ?? 0)).ToList();
string[] xs = new[] { "6", "5", "11", "1", "10", "3", null, null };
IOrderedEnumerable<string> myList = xs.OrderBy(x => int.Parse(x ?? $"{int.MaxValue}")).ToList();
正如您希望 null
s 在数字之后一样,在这种情况下仅使用最大 int 值。由于您的值类型是 string
然后使用内插字符串将 int.MaxValue
作为字符串传递。
??
returns 右表达式,当左表达式的计算结果为 null
.
内插字符串非常整洁 .Net 功能:https://msdn.microsoft.com/en-us/library/dn961160.aspx。
您还可以在查询中使用 string.IsNullOrEmpty
、string.IsNullOrWhiteSpace
或 int.TryParse
然后 int.Parse
,以确保成功解析 (并因此排序)所有元素。