我想最后对null
个值进行排序。
在S1 = ""
函数中使用S2 = ""
或SortInteger
时发生第一个错误。
其次,我想将null
值排序为 end 。
result.Sort((x, y) => SortInteger(x.ID.ToString(), y.ID.ToString(), sortDirection));
ID可以包含null
值。
private int SortInteger(string s1, string s2, string sortDirection)
{
int i1 = int.Parse(s1);
int i2 = int.Parse(s2);
return sortDirection == "asc" ? i1.CompareTo(i2) : i2.CompareTo(i1);
}
在S1 = ""
函数中使用S2 = ""
或SortInteger
时发生第一个错误。
其次,我想将null
值排序为 end 。
答案 0 :(得分:8)
您必须考虑 4 个案例:
s1
和s2
均为有效整数s1
是有效的整数s2
是有效的整数s1
和s2
都不是有效的整数由于string
不一定是有效的 int
,请尝试使用int.TryParse
而不是int.Parse
。
代码:
private static int SortInteger(string s1, string s2, string sortDirection)
{
int i1 = 0;
int i2 = 0;
bool isInt1 = int.TryParse(s1, out i1);
bool isInt2 = int.TryParse(s2, out i2);
if (isInt1 && isInt2)
return sortDirection == "asc" ? i1.CompareTo(i2) : i2.CompareTo(i1);
else if (isInt1)
return sortDirection == "asc" ? -1 : 1;
else if (isInt2)
return sortDirection == "asc" ? 1 : -1;
else
return sortDirection == "asc" ? string.Compare(s1, s2) : string.Compare(s2, s1);
}