IQueryable разных типовC#

Место общения программистов C#
Anonymous
IQueryable разных типов

Сообщение Anonymous »

У меня есть IQueryable, к которому я добавляю предложения Where в соответствии с параметрами поиска. На данный момент этот запрос к базе данных имеет тип Music (

Код: Выделить всё

IQueryable
).
Я понял, что у меня есть кеш утвержденных строк этих данных (т. е. там, где для строк флаг утверждения установлен в значение true).
Поэтому, чтобы быть более эффективным, я решил искать в кеше, а не в базе данных. В кеше хранятся те же записи, но они были преобразованы в DTO, поэтому это будет IQueryable.
Я пробовал это:

Код: Выделить всё

if (search.Approved == true)
{
IQueryable query = Cache.regetCachedMusics().AsQueryable();
}
else
{
IQueryable query = DBContext.Musics;
}

if (search.ID.HasValue)
query = query.Where(x => x.ID == search.ID); //There are more of these
Это не позволяет мне добавить предложениеwhere, поскольку в нем говорится, что запрос не существует.
Поэтому я попробовал:

Код: Выделить всё

IQueryable query;

if (search.Approved == true)
{
query = Cache.regetCachedMusics().AsQueryable();
}
else
{
query = DBContext.Musics;
}

if (search.ID.HasValue)
query = query.Where(x => x.ID == search.ID); //There are more of these
Но это не работает, потому что x.ID == Search.ID выдает

Дерево выражений может не содержать динамическую операцию

Возможно ли это как-то или это больше хлопот, чем пользы?

Подробнее здесь: https://stackoverflow.com/questions/790 ... rent-types

Вернуться в «C#»