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项,所以我只是回到我开始的整个列表.
救命?
你在这里寻找的是:
var FullItems = ItemList.Where(Item => Item != null).ToList();
Run Code Online (Sandbox Code Playgroud)
根据以下文档SkipWhile():
只要指定的条件为真,就会跳过序列中的元素,然后返回剩余的元素.
这不是你正在寻找的行为(我已经加粗了你似乎并不期望/想要的实际行为).
SkipWhile(i => i == null)将跳过第一个非空项目.项目后,首先一个它们空依然被忽略.
使用Where(i => i != null)以选择不为空的所有项目.