在System.Linq.Dynamic.Select()中,如何以简单的方式处理空对象引用?

时间:2015-05-20 01:24:21

标签: c# linq dynamic-linq

我正在使用动态LINQ(System.Linq.Dynamic)(您可以在此处找到说明,http://dynamiclinq.azurewebsites.net/GettingStarted)。

以下陈述效果很好

Products.Select("new(ProductName, CategoryID.CategoryName as CategoryName)");

但是我偶然发现当CategoryID为null时,结果为空。但我认为它会返回如下记录:

ProductName =“Wine”,CategoryName =“”(或null)。

然后我找到了一种方法

Products.Select("new(ProductName, iif(CategoryID==null,\"\",CategoryID.CategoryName) as CategoryName)");

声明很难看。

你有更好的解决方案吗?

提前谢谢你,

1 个答案:

答案 0 :(得分:4)

我唯一发现的是here。目前尚不清楚为什么解决方案被接受,但我所看到的是你可以做到这一点:

"new(ProductName, iif(CategoryID==null,null,CategoryID.CategoryName) as CategoryName)"

而不是:

"new(ProductName, iif(CategoryID==null,\"\",CategoryID.CategoryName) as CategoryName)"

它不是更短,但对我而言,它使代码更具可读性,因为您只使用null而不是转义引号。