我有一个项目列表:
List<Item> ItemList = new List<Item>;
有时列表只是部分已满或某些索引未被占用,因此当我使用foreach遍历列表时,它会产生错误,因为该项为null。我想将该列表减少到实际具有值的项目。这就是我正在尝试的:
var FullItems = ItemList.SkipWhile(Item => Item == null).ToList();
但是当我检查FullItems列表时,它仍然包含ItemList中的项目为null,所以我只是回到我开始的整个列表。
帮助?
答案 0 :(得分:6)
您在这里寻找的是:
var FullItems = ItemList.Where(Item => Item != null).ToList();
只要指定的条件为真,就会跳过序列中的元素,然后返回剩余的元素。
这不是您正在寻找的行为(我已经加粗了您似乎并不期望/希望的实际行为)。
答案 1 :(得分:5)
SkipWhile(i => i == null)
将跳到第一个非空项目。在之后的项仍然会忽略第一个为null的项目。
使用Where(i => i != null)
选择所有非空的项目。