Конвертировать SQL в LINQ / EF - PullRequest
0 голосов
/ 29 октября 2018

Я хочу преобразовать этот SQL-запрос в LINQ. Но я новичок в EF. Пожалуйста, помогите

SQL-запрос

select * from VersionHistory where id in( select OptionsId from StylesHistory where ConId=540 and OptionsId = 28286 and ModifiedAtVersion>1)

ТИА

Я пробовал что-то вроде этого

var stylesHistory = _context.VersionHistory
    .Where(x => x.ModifiedAtVersion > 1 
                 && x.Id==28286 
                 && x.Contract.Id==540)
    .ToList()

Не уверен, как я могу добавить подзапрос

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы также можете создать свой подзапрос как другой IEnumerable, который вы будете использовать в основном запросе.

Это улучшит читабельность.

EF будет генерировать только один запрос.

0 голосов
/ 29 октября 2018

Вы можете легко написать это как:

var result = ctx.VersionHistory
  .Where(vh => ctx.StylesHistory
         .Any( sh => sh.OptionsId == vh.Id &&
                sh.OptionsId == 28286 &&
                sh.ConId = 540 &&
                sh.ModifiedAtVersion > 1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...