我有以下T-SQL用'[Unknown]'替换空值。如何在LINQ to EF查询中实现此目的?
select distinct case when CostCentre = '' then '[Unknown]' else CostCentre end as CostCentre
答案 0 :(得分:1)
带有投影:
var result = ctx.Source.Where(...).Select(i => CostCentre == "" ? "Unknown" : CostCentre);
应该给你一个IQuerialable字符串。
答案 1 :(得分:1)
我怀疑最适合你的解决方案是在你的选择中使用匿名类型。您是在一次性课程中创建自定义/计算属性。选择匿名类型可以执行以下操作:
var items = from testItem in context.TestItems
select new { CostCentre = (testItem.CostCentre == "" ? "[Unknown]" : testItem.CostCentre) };
这将导致项目成为自定义IQueryable类型,其中每个项目都具有CostCentre的单个属性,即字符串类型。如果你真正想要的只是字符串,你最终可以得到一个IQueryable< string>如果你简化它:
var items = from testItem in context.TestItems
select testItem.CostCentre == "" ? "[Unknown]" : testItem.CostCentre;
我希望这会有所帮助。如果你想要超过一个属性,你会有更大的复杂性,但这是一个很好的起点。