0

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 が割り当てられました。

4

1 に答える 1

3

FullNameまたはdbo オブジェクトの 1 つにあるNameかのように見えます。null確認するには、コードを次のように変更します。

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

例外をスローするべきではありません。

于 2012-12-11T14:35:06.667 に答える