作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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");
我的最终实现会略有不同,但我的问题是,如果 linq 表达式的结果为空,testSetting 应该是一个 ObjectSetting 类型的填充对象,值为“false”,我得到的结果是 testSetting 是空。
我已经检查了类似情况的 S/O,我还检查了 msdn 文档,我觉得我的实现是正确的,但显然我不是。
最佳答案
您将 FirstOrDefault
与谓词一起使用 - 所以如果您的 obj.ObjectSettings
不为空,但没有匹配值"PropName"
的 ObjectTypeSetting.Name
,你最终还是得不到任何结果。
如果你想在这种情况下获得默认设置,你应该使用:
var testSetting = obj.ObjectSettings
.Where(os => os.ObjectTypeSetting.Name == "PropName")
.DefaultIfEmpty(defaultSetting)
.First();
关于c# - FirstOrDefault linq 扩展默认项为 null 即使声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390847/
我是一名优秀的程序员,十分优秀!