我正在使用动态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)");
声明很难看。
你有更好的解决方案吗?
提前谢谢你,
答案 0 :(得分:4)
我唯一发现的是here。目前尚不清楚为什么解决方案被接受,但我所看到的是你可以做到这一点:
"new(ProductName, iif(CategoryID==null,null,CategoryID.CategoryName) as CategoryName)"
而不是:
"new(ProductName, iif(CategoryID==null,\"\",CategoryID.CategoryName) as CategoryName)"
它不是更短,但对我而言,它使代码更具可读性,因为您只使用null
而不是转义引号。