ObjectSetting defaultSetting = new ObjectSetting();
defaultSetting.Value = "false";
defaultSetting.ObjectTypeSetting = db.ObjectSettings.First(ots => ots.Name == "PropName");
ObjectSetting testSetting = obj.ObjectSettings.DefaultIfEmpty(defaultSetting)
.FirstOrDefault(os => os.ObjectTypeSetting.Name == "PropName");
我的最终实现略有不同,但我的问题是testSetting应该是ObjectSetting类型的填充对象,如果linq表达式的结果为空,则值为“false”,我得到的结果是testSetting是空。
我已经检查了类似情况的S / O,我还检查了msdn文档,我觉得我正在实现,但显然我不是。
答案 0 :(得分:6)
您正在使用带有谓词的FirstOrDefault
- 因此,如果您的obj.ObjectSettings
不为空,但没有匹配的值为ObjectTypeSetting.Name
{ {1}},你最终仍然没有结果。
如果你想在这种情况下获得默认设置,你应该使用:
"PropName"