2012-12-11 36 views
0

我无法让我的linq行工作。使用LINQ的NullReferenceException

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

我试着用这个方法从这个question的答案使它工作。 我想我知道什么是错的,DatabaseObject是一个抽象类,并且我想避免在DatabaseTable的其他所有内容上使用FullName属性,但是从我可以看到它的确检查它。

编辑:错误:

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

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

+1

你的错误是什么? –

+0

我忘了分配名称,在DatabaseTable以外的对象上,一个愚蠢的错误,并且我一直在寻找linq表达式,这是没有错的:) –

回答

3

看起来好像你的某个dbo对象上的FullNameNamenull。要验证将您的代码更改为:

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

它不应该抛出异常。

+0

这也是我的猜测。 – Davio

+0

我知道在维护期间发现在堆栈溢出:)在这之前想拉问题,但速度太慢。无论如何谢谢 –

+0

留下它可以帮助他人的问题。我甚至会更新这个问题来显示你得到的错误信息。 –

相关问题