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

本文关键字:Item 返回 null SkipWhile | 更新日期: 2023-09-27 18:10:11

我有一个项目列表:

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

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

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

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

帮助吗?

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

你要找的是:

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

根据SkipWhile()的文档:

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

这不是你要找的行为(我有持有的实际行为,你似乎不期望/愿望)。

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

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