System.NullReferenceException 在 linq 中排序 OrderBy(a => a.Url), UWP

System.NullReferenceException in a linq sort OrderBy(a => a.Url), UWP

我有一个 ObservableCollection,我什至先检查它以确保它有元素。但是我仍然得到一个 nullReferenceException(只是有时,这在 winrt 8.1 版本中从来没有出现过问题,我正在将其更改为 UWP。) 代码在下面,它给了我错误 a.Url 是:

if (sTumblrblog_gv_list.Count != 0)
{
    if (tumblogconfig.ShowNSFWBlogs)
        sTumblrGridView.ItemsSource = sTumblrblog_gv_list.OrderBy(a => a.Url);
    else
        sTumblrGridView.ItemsSource = sTumblrblog_gv_list.OrderBy(a => a.Url).Where(a => a.IsNsfw == false);
}

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=Tumblr-FIA
  StackTrace:
       at tumblr_fia.MainPage.<>c.<updatestats>b__47_1(sTumblrblog_gv a)
       at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
       at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
       at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext()
       at System.Runtime.InteropServices.WindowsRuntime.EnumeratorToIteratorAdapter`1.MoveN

ext()
       at System.Runtime.InteropServices.WindowsRuntime.EnumeratorToIteratorAdapter`1.get_HasCurrent()
  InnerException: 

我明白我相信这个错误,但我正在检查 sTumblrblog_gv_list 不是空值。我现在已经在尝试和捕捉它了。有时我仍然会收到错误消息。

sTumblrblog_gv_list 中似乎有空值。

OrderBy(a => a.Url).Where(a => a.IsNsfw == false) - 这是一个懒惰的评估。

试写评价:

sTumblrGridView.ItemsSource = sTumblrblog_gv_list.OrderBy(a => a.Url).ToArray();

你可以试试

.OrderBy(a => a != null ? a.Url : null)

在 C# 6 上你有语法

.OrderBy(a => a?.Url)