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

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

如果上述 if 语句为真,我会收到一个

Object reference not set to an instance of an object

异常,因为 newThing 为空。是否可以初始化 NewThing 并将 newThing.ThingName 设置为 viewModel.ThingName?

4

4 回答 4

2

除了@Satpals 解决方案之外,这里还有一个从数据库获取项目或初始化新项目的单行代码:

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

是的,您可以,但您需要先创建一个新实例Thing

片段:

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

希望这可以帮助。

于 2013-10-23T11:44:16.283 回答
0

我觉得你越来越糊涂了。

something.Equals(somethingElse);

返回true or false是否somethingsomethingElse相等。

something = somethingElse;

设置somethingsomethingElse这就是你想要做的。

此外:

something == somethingElse

返回true or false是否somethingsomethingElse相等。

于 2013-10-23T11:47:00.407 回答