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中为空的项目,所以我只是得到了我开始的整个列表。
帮助吗?
你要找的是:
var FullItems = ItemList.Where(Item => Item != null).ToList();
根据SkipWhile()
的文档:
绕过序列中的元素,只要指定的条件为真,然后返回剩余的元素。
这不是你要找的行为(我有持有的实际行为,你似乎不期望/愿望)。
SkipWhile(i => i == null)
将跳过直到第一个非空项。之后第一个为空的项仍然被忽略。
使用Where(i => i != null)
选择所有非空项