C# 在System.Linq.Dynamic.Select()中,如何以简单的方式处理空对象引用?
我使用的是动态LINQ(System.LINQ.dynamic)(您可以在这里找到描述,) 下面的陈述很有效C# 在System.Linq.Dynamic.Select()中,如何以简单的方式处理空对象引用?,c#,linq,dynamic-linq,C#,Linq,Dynamic Linq,我使用的是动态LINQ(System.LINQ.dynamic)(您可以在这里找到描述,) 下面的陈述很有效 Products.Select("new(ProductName, CategoryID.CategoryName as CategoryName)"); 但我意外地发现,当CategoryID为null时,结果为空。但我想它会返回一个记录,比如: ProductName=“Wine”,CategoryName=“”(或空) 然后我找到了一种方法,通过 Products.Select(
Products.Select("new(ProductName, CategoryID.CategoryName as CategoryName)");
但我意外地发现,当CategoryID为null时,结果为空。但我想它会返回一个记录,比如:
ProductName=“Wine”,CategoryName=“”(或空)
然后我找到了一种方法,通过
Products.Select("new(ProductName, iif(CategoryID==null,\"\",CategoryID.CategoryName) as CategoryName)");
这句话很难听
你有更好的解决办法吗
提前谢谢你,我唯一找到的是。不清楚为什么会接受该解决方案,但我看到的是,您可以这样做:
"new(ProductName, iif(CategoryID==null,null,CategoryID.CategoryName) as CategoryName)"
与此相反:
"new(ProductName, iif(CategoryID==null,\"\",CategoryID.CategoryName) as CategoryName)"
它并不更短,但对我来说,它使代码更具可读性,因为您只需使用
null
,而不是转义引号。“新建(ProductName,CategoryID==null?null:CategoryID.CategoryName)作为CategoryName)”“新建(ProductName,CategoryID==null?null:CategoryID.CategoryName)作为CategoryName”有效。正如Cory所提到的,使用null似乎更简单、更一般。更难看的示例是:grand==null?null:(grand.parent==null?null:grand.parent.son)。