Добавьте новое значение в результат запроса

#c# #asp.net #.net #entity-framework #entity-framework-core

Вопрос:

У меня есть запрос с использованием Entity Framework, который выглядит следующим образом:

 var CompanyDetail = await _dbContext.tablename
                                    .Where(cu => cu.Id == newId)
                                    .Select(cu => cu.Carrir)
                                    .FirstOrDefaultAsync();
 

Он отлично работает и отлично возвращает все детали.

Теперь я хочу добавить новое значение в этот результирующий набор, который я получаю:

 var status = await _documentSettingService.IsValid();
 

Это приведенное выше значение не хранится в этой текущей таблице, поэтому я хочу, чтобы, когда эта функция вернет данные, она добавила это приведенное выше значение в результирующий набор Entity Framework.

У меня есть два вопроса :

  1. Возможно это или нет, и если да — как это сделать?
  2. Хорошо ли это с точки зрения практики ?

Спасибо

Комментарии:

1. Обычно вы создадите новый класс (DTO), который будет содержать все необходимые поля и копировать данные туда.

2. Не могли бы вы, пожалуйста, объяснить, что вы хотите — от статуса к хвостам компаний или от хвостов компаний к статусу. И я думаю, было бы неплохо, если бы вы показали все характеристики обоих классов — статус и сведения о компании.

3. пожалуйста , сначала перейдите var CompanyDetail = await _dbContext.tablename.Where(cu => cu.Id == newId).Select(cu => cu.Carrir).FirstOrDefaultAsync(); в var CompanyDetail = await _dbContext.tablename.FirstOrDefaultAsync(cu => cu.Id == newId).Select(cu => cu.Carrir); , а затем, как сказал Серж : объясните, что именно вы хотите .

4. Прямо сейчас я получаю данные из запроса select, и они поступают на основе класса модели, но в этом результате я хочу добавить новое значение этого статуса..но я не хочу добавлять какой-либо новый атрибут в класс модели..без добавления в модель я хочу добавить значение статуса в результат запроса.

Ответ №1:

Как сказал Гуру Строн, вы должны создать новый класс (DTO) с CompanyDetail Status полями и.

Если вы не хотите создавать новый класс, есть несколько альтернативных способов

 (string, bool) result = (CompanyDetail, status);
 

или с помощью anonymous объекта типа

 var result = new { CompanyDetailResult = CompanyDetail, StatusResult = status};