2015-09-17 118 views
0

我有一个ObservableCollection,我甚至首先检查它以确保它具有元素。然而,我仍然得到一个nullReferenceException(有时候,这从来没有遇到与winrt 8.1版本的问题,我正在改变它为UWP。) 代码如下,它给了我错误,其中a.Url是:System.NullReferenceException在linq排序OrderBy(a => a.Url),UWP

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不是空值。我现在试试&捕获。有时我仍然收到错误信息。

回答

0

看起来你在sTumblrblog_gv_list内有空值。

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

尝试写评价:

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

如果项目之一'sTumblrGridView'是'那么'sTumblrblog_gv_list.OrderBy(a => a.Url)'仍然会抛出异常。可能需要'.Where(a => a!= null)'。 – juharr

+0

我这么认为。它应该放置在排序之前 – Andection

6

你可以尝试

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

在C#6你有语法

.OrderBy(a => a?.Url)