Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在System.Linq.Dynamic.Select()中,如何以简单的方式处理空对象引用?_C#_Linq_Dynamic Linq - Fatal编程技术网

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

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(

我使用的是动态LINQ(System.LINQ.dynamic)(您可以在这里找到描述,)

下面的陈述很有效

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)。