如何在LINQ查询的匿名对象初始化中添加条件赋值逻辑?
当然可以内联实现!
完全没问题,你直接在LINQ的匿名对象初始化逻辑里就能搞定这个需求,用C#的条件运算符或者空值处理语法都能轻松实现,这是最简洁直接的方式。
方式一:三元条件运算符
通过?:运算符直接判断ParentProcessId是否为null,按需赋值:
Model.Select(m => new { id = m.ProcessId, parent = m.ParentProcessId == null ? "#" : m.ParentProcessId.ToString(), text = m.Name });
这里要注意类型一致性:如果ParentProcessId是值类型(比如可空的int?),直接赋值字符串"#"会导致类型不匹配,所以需要用ToString()把原有值转成字符串,确保parent属性整体为string类型。
方式二:空条件+null合并运算符
如果觉得三元运算符有点啰嗦,可以用更简洁的语法组合:
Model.Select(m => new { id = m.ProcessId, parent = m.ParentProcessId?.ToString() ?? "#", text = m.Name });
?.是空条件运算符:如果ParentProcessId不为null,就调用ToString();如果是null,整个表达式返回null??是null合并运算符:如果前面的表达式结果为null,就自动替换成"#"
这两种方式都是完全内联在LINQ查询里的,不需要额外写辅助方法或者拆分逻辑,完美适配你的需求。
内容的提问来源于stack exchange,提问作者Char
相关产品推荐
相关产品推荐

