C# SkipWhile(Item => Item == null) 仍然 returns 空项目

C# SkipWhile(Item => Item == null) still returns null items

我有一个物品清单:

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

有时列表只是部分填满或某些索引未被占用,因此当我使用 foreach 遍历列表时,它会给出错误,因为该项目为空。我想将该列表缩减为那些真正有价值的项目。这就是我正在尝试的:

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

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

帮忙?

您要找的是:

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

根据 docs on SkipWhile():

Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.

这不是您要寻找的行为(我已经 加粗了您似乎 expect/desire 没有的实际行为)。

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

使用 Where(i => i != null) 到 select 所有不为空的项目。