0
var newThing = db.Things.SingleOrDefault(t => t.ThingName == viewModel.ThingName);

if (newThing == null)
{
    newThing.ThingName.Equals(viewModel.ThingName);
}

上記の if ステートメントが true の場合、

Object reference not set to an instance of an object

newThing が null であるため例外です。NewThing を初期化し、newThing.ThingName を viewModel.ThingName に設定することは可能ですか?

4

4 に答える 4

2

@Satpals ソリューションに加えて、DataBase からアイテムを取得するか、新しいアイテムを初期化するためのワンライナーを次に示します。

var newThing = db.Things.SingleOrDefault
    (t => t.ThingName == viewModel.ThingName) ??
    new Thing { ThingName = viewModel.ThingName };
于 2013-10-23T11:47:04.080 に答える
2

初期化して値を設定できます

if (newThing == null)
{
    newThing = new Thing(); 
    newThing.ThingName = viewModel.ThingName;
}
于 2013-10-23T11:39:57.607 に答える
0

混乱していると思います。

something.Equals(somethingElse);

とが等しいtrue or falseかどうかを返します。somethingsomethingElse

something = somethingElse;

に設定somethingsomethingElseます。これがやりたいことです。

さらに:

something == somethingElse

とが等しいtrue or falseかどうかを返します。somethingsomethingElse

于 2013-10-23T11:47:00.407 に答える
0

はい、できますが、Thing最初の新しいインスタンスを作成する必要があります。

スニペット:

if (newThing == null)
{
    newThing = new Thing();
    newThing.ThingName = viewModel.ThingName; //Set the ThingName to what is wanted.
}

お役に立てれば。

于 2013-10-23T11:44:16.283 に答える