最后对空值排序

时间:2019-07-12 12:39:59

标签: c# sorting

我想最后对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

1 个答案:

答案 0 :(得分:8)

您必须考虑 4 个案例:

  1. s1s2均为有效整数
  2. 只有s1是有效的整数
  3. 只有s2是有效的整数
  4. s1s2都不是有效的整数

由于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);
}