C#SkipWhile(Item => Item == null)仍然返回空项

时间:2015-08-28 14:16:09

标签: c# list foreach null skip

我有一个项目列表:

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

有时列表只是部分已满或某些索引未被占用,因此当我使用foreach遍历列表时,它会产生错误,因为该项为null。我想将该列表减少到实际具有值的项目。这就是我正在尝试的:

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

但是当我检查FullItems列表时,它仍然包含ItemList中的项目为null,所以我只是回到我开始的整个列表。

帮助?

2 个答案:

答案 0 :(得分:6)

您在这里寻找的是:

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

根据docs on SkipWhile():

  

只要指定的条件为真,就会跳过序列中的元素,然后返回剩余的元素

这不是您正在寻找的行为(我已经加粗了您似乎并不期望/希望的实际行为)。

答案 1 :(得分:5)

SkipWhile(i => i == null)跳到第一个非空项目。在之后的项仍然会忽略第一个为null的项目。

使用Where(i => i != null)选择所有非空的项目。