有没有更好的方法来写这个? 我不喜欢null检查的方式
editItem.FrameVent =fd.FirstOrDefault(x => x.hardwaretype == 39
&& x.name.StartsWith("Frame Vent"))==null?null: fd.FirstOrDefault(x => x.hardwaretype == 39
&& x.name.StartsWith("Frame Vent")).hardwareid;
我可以不用重复查询位
答案 0 :(得分:6)
将其重写为:
editItem.FrameVent = fd.Where(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"))
.Select(p => p.hardwareid)
.FirstOrDefault();
答案 1 :(得分:0)
你也可以做得更经典一点:
var result = fd.FirstOrDefault(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"));
editItem.FrameVent = result == null ? null : result.hardwareid;
答案 2 :(得分:0)
您可以添加变量以简化
var frameVent = fd.FirstOrDefault(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"));
editItem.FrameVent = frameVent==null ? null : frameVent.hardwareid;
答案 3 :(得分:0)
就像一些额外的信息,而不是答案:
如果Microsoft确实开始实施“安全导航操作员”('?。')(as requested here),那么解决方案将如下所示:
editItem.FrameVent =
fd.FirstOrDefault(x => x.hardwaretype == 39 && x.name.StartsWith("Frame Vent"))
?.hardwareid;
是否引入这个新的运营商是一个好主意是一个争论的问题。 :)