Предположим, 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.'