У меня есть объект, называемый EmailLog с данными, такими как To, From, Subject, Body и т. Д. В базе данных.исключая столбец в результатах запроса
Я хотел бы исключить Body для эффективности/производительности при запросе нескольких строк. Не совсем уверен, как это осуществить. Я попытался использовать проекцию (см. Ниже), но я получаю ошибку времени выполнения, говоря, что я не могу проецировать на тип Entity.
var results = Repository.Find<EmailLog>().Select(x => new EmailLog
{
Id = x.Id,
Subject = x.Subject,
Recipient = x.Recipient,
Status = x.Status,
FirstAttempted = x.FirstAttempted,
LastAttempted = x.LastAttempted,
Attempts = x.Attempts
});
Это понятно. Я могу создать для него новый класс без Body и Project, но я применяю некоторую разбивку на страницы для запроса и не хочу оценивать результаты до тех пор, пока не применил варианты разбивки на страницы. Моя функция разбиения на страницах выглядит следующим образом:
public static PagedList<T> ApplyPagingAndSorting<T>(this IEnumerable<T> list,
IPaginationOptions paginationOptions)
Он принимает в перечислимом списке и применяет Skip() и Take() в список, а затем перечисляет его. Итак, как я могу удостовериться, что передаю в список IEnumerable свою функцию, которая еще не была перечислина, но связанный запрос не выбирает Body, когда он окончательно перечислит или оценит?
Это должно помочь в этом вопросе https://visualstudiomagazine.com/articles/2014/09/01/splitting-tables.aspx – jbl
Насколько я знаю, функция Select() не перечисляет ваш результат, это один методов Linq с использованием отложенного выполнения. Таким образом, вы должны иметь возможность проецировать класс без Body и передать его вашему ApplyPagingAndSorting(), который затем оценит ваш результат. –
@FlorianHaider, я пробовал это раньше, и это дало мне ошибку, связанную с чем-то еще. Но я попробовал это сейчас, и это работает. Пожалуйста, отправьте это как ответ, и я буду рад отметить его как таковой. – Riz