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

Gry*_*vid 2 c# foreach null list skip

我有一个项目列表:

List<Item> ItemList = new List<Item>;
Run Code Online (Sandbox Code Playgroud)

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

var FullItems = ItemList.SkipWhile(Item => Item == null).ToList();
Run Code Online (Sandbox Code Playgroud)

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

救命?

Tho*_*ger 6

你在这里寻找的是:

var FullItems = ItemList.Where(Item => Item != null).ToList();
Run Code Online (Sandbox Code Playgroud)

根据以下文档SkipWhile():

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

这不是你正在寻找的行为(我已经加粗了你似乎并不期望/想要的实际行为).


Cod*_*ter 5

SkipWhile(i => i == null)将跳过第一个非空项目.项目后,首先一个它们空依然被忽略.

使用Where(i => i != null)以选择不为空的所有项目.