当某些转换可能为null时,使用LINQ convertAll

时间:2010-11-22 03:50:20

标签: c# linq

我有以下代码

          people = positions.ConvertAll(r=> r.Person).ToList();

但在某些情况下“Person”将为null,在这些情况下我根本不想将它们添加到已转换的集合中(我不想要空项目)

实现这一目标的最佳方法是什么。你有条件转换器吗?

3 个答案:

答案 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();