Как я заменяю одним значением свойство в результате запроса LINQ для другого значения?

У меня есть следующий T-SQL, который заменяет пустые значения' [Неизвестным]'. Как я могу достигнуть этого в LINQ к запросу EF?

select distinct case when CostCentre = '' then '[Unknown]' else CostCentre end as CostCentre
1
задан ProfK 9 August 2010 в 21:04
поделиться

2 ответа

с проекцией:

var result = ctx.Source.Where(...).Select(i => CostCentre == "" ? "Unknown" : CostCentre);

должно дать вам IQuerialable строк.

1
ответ дан 2 September 2019 в 22:19
поделиться

Я подозреваю, что лучшим решением для вас будет использование анонимного типа в селекте - т.е. вы создаете пользовательское/вычисляемое свойство в ситуации одноразового класса. Выбор анонимного типа позволяет сделать следующее:

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;

Надеюсь, это поможет. У вас будут большие сложности, если вам нужно более одного свойства, но это хорошая отправная точка.

1
ответ дан 2 September 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: