2015-08-28 95 views
2

我有一個項目列表:C#SkipWhile(項目=>項目== NULL)仍然返回null項目

List<Item> ItemList = new List<Item>; 

有時名單只是部分全部或某些指標沒有被佔用,因此,當我重複通過使用foreach的列表,它會給出一個錯誤,因爲該項目爲空。我想把這個列表減少到那些實際上有價值的項目。這就是我想:

var FullItems = ItemList.SkipWhile(Item => Item == null).ToList(); 

但是當我檢查FullItems列表,它仍包含ITEMLIST是空的項目,所以我剛剛回到我開始與整個列表。

幫助?

+5

_「它仍包含ITEMLIST是空的項目」 _ - 但不是那些開頭。你在尋找'.Where(i => i!= null)'? – CodeCaster

+0

'SkipWhile'返回第一個非空元素之後的所有內容。使用'ItemList.Where'。 – Lee

回答

5

SkipWhile(i => i == null)跳過,直到第一個非空項。項目之後第一個爲空的仍然被忽略。

使用Where(i => i != null)以選擇不爲空的所有項目。

+0

謝謝!只有工作到第一個非空項目不是我所期望的。 –

6

什麼你在這裏尋找的是:

var FullItems = ItemList.Where(Item => Item != null).ToList(); 

由於每docs on SkipWhile():

繞過元素的順序,只要指定的條件爲真,則返回剩餘的元素

這是不是你正在尋找的行爲(我有加粗的實際行爲,你似乎並不指望/慾望)。

+0

我不認爲你完全理解我的問題。你是正確的,我應該用戶Where(),但返回剩餘的項目正是我需要的行爲。問題是,SkipWhile(i = null)只能運行到第一個非空項目。如果我列表中的前幾個項目是空的,那麼我寫的代碼將工作正常。 –

相關問題