我有以下代码
people = positions.ConvertAll(r=> r.Person).ToList();
但在某些情况下“Person”将为null,在这些情况下我根本不想将它们添加到已转换的集合中(我不想要空项目)
实现这一目标的最佳方法是什么。你有条件转换器吗?
答案 0 :(得分:6)
使用 LINQ ,您可以执行以下操作:
positions.Where(r => r.Person != null)
.Select(r => r.Person)
.ToList();
ConvertAll
方法不是LINQ的一部分;它是List<T>
上的实例方法。
如果你想坚持下去,你可以这样做:
positions.FindAll(r => r.Person != null)
.ConvertAll(r => r.Person);
请注意,这是微妙的不同,因为过滤器和投影的结果都是List<T>
s,而不是流式查询。最终结果应该是相同的。
答案 1 :(得分:3)
people = positions
.Where(r => r.Person !=null).ToList()
.ConvertAll(r=> r.Person);
答案 2 :(得分:2)
使用Where
过滤掉空值,然后使用Select
:
people = positions.Where(p => p.Person != null).Select(r => r.Person).ToList();