gpt4 book ai didi

c# - FirstOrDefault linq 扩展默认项为 null 即使声明

转载 作者:行者123 更新时间:2023-12-03 20:50:38 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com