Выберите запрос по типу, чтобы преобразовать его в свой подтип, используя Linq

Я работаю над основным проектом ASP.Net, и у меня есть модель, как показано ниже:

Class abcde
{
   int a {get;set;}
   int b {get;set;}
   int c {get;set;}
   int d {get;set;}
   int d {get;set;}
}

В конкретном представлении я просто потребовал свойств a и b класса ab { int a { get ; set ;} int b { get ; set ;} } определенная модель. Итак, я просто определяю класс ViewModel (в другое пространство имен), как показано ниже:

var objects = _context.abcde.Select( x=> new {x.a, x.b}).ToArray()

Теперь в контроллере я делаю запрос select, и я намереваюсь выбирать только свойства a и b. Поскольку это единственные свойства, которые я хочу показать в представлении. Итак, в основном мой запрос должен быть:

ab

Проблема здесь в том, что я получаю Array анонимного типа, который мне нужно сопоставить вручную с моим классом viewmodel ab. В этом случае у меня должен быть цикл, чтобы вручную преобразовать каждый из результирующего набора в ViewModel.

Глядя на подпись функции Select

Enumerable.Select TSource,? TResult

Похоже, что сама функция может сделать преобразование, но я не мог найти никаких примеров. Возможно, я ошибаюсь. Можете ли вы предложить способ справиться с таким сценарием. Я считаю, что это будет очень распространенный случай. Заранее спасибо.

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

1

Ответов: 1


2 принят

Проблема здесь в том, что я получаю Array анонимного типа, который мне нужно сопоставить вручную с моим классом viewmodel ab. В этом случае у меня должен быть цикл, чтобы вручную преобразовать каждый из результирующего набора в ViewModel.

Поэтому просто используйте abкласс, используя его следующим образом:

x => new ab() { a = x.a, b = x.b }

Вместо использования анонимного типа:

x => new { x.a, x.b }

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

var objects = _context.abcde.Select(x => new ab { a = x.a, b = x.b }).ToArray()
C #, сущность-рамки, LINQ, asp.net-ядро, сущность-рамки-жильный,
Похожие вопросы