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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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