2011-09-13 22 views
-1

我在另一個LINQ語句中有這塊代碼。LINQ返回計數,即使列表爲空

VideoLinks = (from video in m.VideoLinks.DefaultIfEmpty(new VideoGallery()) 
               orderby video.CreatedDate 
               select new VideoGallery() 
               { 
                Source = video.Source, 
                Type = video.Type, 
                Links = video.Links, 
                Title = video.Title 
               }).ToList() 

不幸的是,如果不使用DefaultIfEmpty它通過我一個例外。如果我使用DefaultIfEmpty,即使m.VideoLinks爲null,我也會將視頻鏈接數設置爲1。

所以現在如何才能避免計數1,如果m.VideoLinks是空

+0

你收到的例外是什麼? – mtazva

+0

我不明白downvote的原因。我的問題不是關於例外或者如何解決關於數量和如何使其爲零的例外。異常是未將對象引用設置爲對象的實例 – Praneeth

+0

我沒有投票給它,Praneeth。不知道原因。 – mtazva

回答

2

這就像你正在使用LINQ到對象,所以你應該添加一個where video != null

VideoLinks = (from video in m.VideoLinks 
       where video != null 
       orderby video.CreatedDate 
       select new VideoGallery() 
       { 
       Source = video.Source, 
       Type = video.Type, 
       Links = video.Links, 
       Title = video.Title 
       }).ToList() 
+0

完美..沒想過在哪裏條件。 – Praneeth

6

DefaultIfEmpty是要給你一個默認值。它算作是當你調用ToList(),它的內容...因此你數爲1

+0

我的問題是如何避免它? – Praneeth

+1

不要使用DefaultIfEmpty,這是如何。 –

+1

我回答後你改變了你的問題嗎?那不太酷。 – wllmsaccnt

1

wllmsaccnt是正確的 - 你的問題是你的陳述中的「DefaultIfEmpty」部分。根據定義,您請求,有是集合中的至少一個項目,根據該方法的定義:

返回指定序列或指定的值 單一實例集合,如果序列的元素是空的

我認爲這裏的重要問題是您在使用DefaultIfEmpty時收到的異常?如果你告訴我們,或許我們可以幫你避免它...