Length中的NullReferenceException

ale*_*vdi 2 c# linq

我有一个代码:

string[] sizes = new string[] {"1","11","2","22","200","222", null, "105", "101", "102", "103", "90" };

try
{
  var size = from x in sizes
           orderby x.Length, x
           select x;

  foreach (var p in size)
  {
     Console.WriteLine(p);
  }
   Console.Read();
}
catch (NullReferenceException)
{
}
Run Code Online (Sandbox Code Playgroud)

我如何在x.Length中捕获null,并继续执行代码?

Jon*_*eet 11

我如何在x.Lenght中捕获null,并继续执行代码?

那么,在这种情况下你想要的价值是什么?例如,您可以使用:

orderby x == null ? -1 : x.Length, x
Run Code Online (Sandbox Code Playgroud)

或者可能:

orderby x == null ? int.MaxValue : x.Length, x
Run Code Online (Sandbox Code Playgroud)

或者可能:

orderby x == (x ?? "").Length, x
Run Code Online (Sandbox Code Playgroud)

或者你应该过滤字符串开头:

var size = from x in sizes
           where x != null
           orderby x.Length, x
           select x;
Run Code Online (Sandbox Code Playgroud)