当前位置:  开发笔记 > 编程语言 > 正文

在Select中过滤Null值

如何解决《在Select中过滤Null值》经验,为你挑选了2个好方法。

我有类型为T的对象的IQueryable列表,我想将其转换为K类型的对象

List tranformedList = originalList.Select(x => transform(x)).ToList();

如果转换函数不能转换对象,则返回null.如果我想过滤掉null元素,我可以调用它

List tranformedList = originalList.Select(x => transform(x))
                                     .Where(y => y != default(K))
                                     .ToList();

或者在LINQ中调用Select时是否还有其他过滤掉null元素的方法?



1> Nathan W..:

你不能只做这样的事情:

List tranformedList = originalList.Select(x => tranform(x))
                                 .Where(y => y != null) //Check for nulls
                                 .ToList();



2> 小智..:

关于什么

    List tranformedList = originalList
                             .Select(x => transform(x))
                             .OfType()
                             .ToList()

注意拆箱同时摆脱空值(特别是当K是一个结构时)

当BI .Where(y => y != null)是int时,David BI不相信你的代码有效!如果K是int,你将无法获得编译代码!


`.Select(x => transform(x))`可以是`.Select(transform)`.无需将其包装在相同的lambda中.
我喜欢这个答案.你能做`.OfType `作为一种更通用的方法,因为null永远不会是类型对象,但任何其他对象都会?或者这会导致拳击/拆箱(你提到)哪个是计算上昂贵的?
推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有