У меня есть следующий T-SQL, который заменяет пустые значения' [Неизвестным]'. Как я могу достигнуть этого в LINQ к запросу EF?
select distinct case when CostCentre = '' then '[Unknown]' else CostCentre end as CostCentre
с проекцией:
var result = ctx.Source.Where(...).Select(i => CostCentre == "" ? "Unknown" : CostCentre);
должно дать вам IQuerialable строк.
Я подозреваю, что лучшим решением для вас будет использование анонимного типа в селекте - т.е. вы создаете пользовательское/вычисляемое свойство в ситуации одноразового класса. Выбор анонимного типа позволяет сделать следующее:
var items = from testItem in context.TestItems
select new { CostCentre = (testItem.CostCentre == "" ? "[Unknown]" : testItem.CostCentre) };
В результате элементы будут представлять собой пользовательский тип IQueryable, где каждый элемент имеет единственное свойство CostCentre типа string. Если вам действительно нужны только строки, вы можете получить в итоге IQueryable
var items = from testItem in context.TestItems
select testItem.CostCentre == "" ? "[Unknown]" : testItem.CostCentre;
Надеюсь, это поможет. У вас будут большие сложности, если вам нужно более одного свойства, но это хорошая отправная точка.