Добавить IQueryable с дополнительными частями запроса - PullRequest
1 голос
/ 02 июля 2019

У меня есть следующее:

IQueryable<Entity1, Entity2> query = //some query with joins
return query.Distinct().ToList();

Это отлично работает. Я хочу расширить запрос, добавив в него некоторые дополнительные части, например:

IQueryable<Entity1, Entity2> query = //some query with joins
return query.Distinct().ToList();

if (something)
{
     query = query.Concat(query.Where(some conditions here));
}
else
{
     query = query.Concat(query.Where(some other conditions));
}

return query.Distinct().ToList();

К сожалению, в этом случае query равно нулю после query.Concat.

Я также пробовал:

var subquery = query.Concat(query.Where(some other conditions));

но он возвращает тот же результат. Есть предложения?

1 Ответ

1 голос
/ 02 июля 2019

.Concat(...) объединяет все.Если все, что вы хотите сделать, это добавить предикат, то просто поменяйте текущим query на query.Where(...)

IQueryable<Entity1, Entity2> query = //some query with joins

if (something)
{
     query = query.Where(some conditions here);
}
else
{
     query = query.Where(some other conditions);
}
return query.Distinct().ToList();

... вы даже можете использовать синтаксис запроса.

var query = from e in yourDbContext.YourTable 
            select e;

if (something) 
{
    query = from e in query
            where someCondition
            select e;
}
return query.Distinct().ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...