.net System.Collections.Generic.List <T> .sort nullable int

man*_*nni 0 .net c#

如何使用可排名的int属性对列表进行排序System.Collections.Generic.List<T>.Sort?

或者我必须进行手动分类,因为那是不可能的?

Pet*_*hie 6

首先,您需要确定空值如何与具有值的项目进行比较.然后你可以进行比较.例如,如果您确定null始终"小于"非null:

list.Sort((x,y) => {
  if(!x.Nullable.HasValue) {
     if(!y.Nullable.HasValue) return 0; // equal
     else return -1; // y is greater
  }
  else
  {
    if(!y.Nullable.HasValue) return 1; // x is greater
    if(x == y) return 0; // equal
    if(x < y) return -1; // y is greater
    else return 1;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,如果你想把'null`视为小于非空值,那就是默认的排序实现,只能调用`list.Sort()`,但这是一个很好的例子. (2认同)