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();
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 所有不为空的项目。
我有一个物品清单:
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();
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 所有不为空的项目。