Как написать запрос LINQ, извлекающий записи, имеющие параметры из определенной коллекции? - PullRequest
0 голосов
/ 15 апреля 2020

Предположим, Entity имеет столбцы SomeId, DateAt соответствующих типов int, DateTime. Предположим, у меня есть коллекция параметров: {(SomeId_1, DateAt_1),...,(SomeId_N, DateAt_N)} где 1=<N

Я хочу получить все строки в таблице Entity, которые: {r: (SomeId_1=r.SomeId AND DateAt_1=r.DateAt) OR .. OR (SomeId_N=r.SomeId AND DateAt_N=r.DateAt)}

Есть ли способ написать запрос Linq для DbSet ?

_context.Entity....

, который будет выдавать запрос, например:

SELECT *
FROM Entity
WHERE ( SomeId_1 = SomeId AND DateAt_1 = DateAt)
    OR..
    OR (SomeId_N = SomeId AND DateAt_N = DateAt)

Как этого добиться, используя EF Core 3.1 ?

ЗАМЕЧАНИЕ: используя код как показано ниже

List<EntityAtPait> pairs = ...
await _context.Entity.
    .Where(f => pairs.Any(x =>
        x.DateAt == f.DateAt 
        && x.SomeId == f.SomeId ))
    .ToListAsync())

throws:
System.InvalidOperationException: 'The LINQ expression 'DbSet<Entity>
    .Where(f => ...
        .Any(x => x.DateAt == f.DateAt && x.SomeId == f.SomeId ))' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...