如何将LINQ查询结果中的属性的一个值替换为另一个值?

时间:2010-08-09 21:04:14

标签: .net linq

我有以下T-SQL用'[Unknown]'替换空值。如何在LINQ to EF查询中实现此目的?

select distinct case when CostCentre = '' then '[Unknown]' else CostCentre end as CostCentre

2 个答案:

答案 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;

我希望这会有所帮助。如果你想要超过一个属性,你会有更大的复杂性,但这是一个很好的起点。