Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 使用LINQ的NullReferenceException_C#_Linq_If Statement - Fatal编程技术网

C# 使用LINQ的NullReferenceException

C# 使用LINQ的NullReferenceException,c#,linq,if-statement,C#,Linq,If Statement,我很难让linq线路正常工作 var result = databaseObjects.Where(dbo => dbo.GetType() == typeof(Model.DatabaseTable) ? (dbo as Model.DatabaseTable).FullName.Equals(name) : dbo.Name.Equals(name)); 我试着用这个方法来解决这个问题。 我想我知道错在哪里了,DatabaseObject是一个抽象类,我想避免在DatabaseTab

我很难让linq线路正常工作

var result = databaseObjects.Where(dbo => dbo.GetType() == typeof(Model.DatabaseTable) ? (dbo as Model.DatabaseTable).FullName.Equals(name) : dbo.Name.Equals(name));
我试着用这个方法来解决这个问题。 我想我知道错在哪里了,DatabaseObject是一个抽象类,我想避免在DatabaseTable之外的任何东西上使用FullName属性,但从我所看到的情况来看,它确实检查了它

编辑:错误是:

System.NullReferenceException was unhandled
{"Object reference not set to an instance of an object."}

问题是我忘了分配DatabaseObject.Name,已分配DatabaseTableObject.FullName。

在您的一个dbo对象上,似乎
FullName
Name
null
。要验证,请将代码更改为:

var result = databaseObjects.Where(dbo => dbo.GetType() == typeof(Model.DatabaseTable) ? (dbo as Model.DatabaseTable).FullName == name : dbo.Name == name); 

它不应该引发异常。

看起来好像在一个dbo对象上
FullName
Name
null
。要验证,请将代码更改为:

var result = databaseObjects.Where(dbo => dbo.GetType() == typeof(Model.DatabaseTable) ? (dbo as Model.DatabaseTable).FullName == name : dbo.Name == name); 

它不应该抛出异常。

我知道在堆栈溢出的维护过程中发现:)在此之前想将问题拉下来,但速度太慢。无论如何,谢谢你留下这个问题,它可能会帮助别人。我甚至建议更新问题以显示您收到的错误消息。我知道在堆栈溢出的维护过程中发现:)在此之前想将问题向下拉,但速度太慢。无论如何,谢谢你留下这个问题,它可能会帮助别人。我甚至建议更新问题以显示您收到的错误消息。我忘了在DatabaseTable以外的对象上指定名称,这是一个愚蠢的错误,我一直在查看linq表达式,这没有错:)我忘了在DatabaseTable以外的对象上指定名称,这是一个愚蠢的错误,我一直在研究linq的表情,这并没有错:)