Я не верю, что есть способ добавить фильтр к объекту DbSet<News>
, как вы предлагаете.Но то, что вы должны сделать, это просто написать другую функцию:
public virtual IEnumerable<News> TodaysNews
{
get { return News.WHere(n => n.PublishDate == DateTime.Today); }
}
И затем, я думаю, если вы сделали запрос поверх этого где-то еще, например:
var todaysGoodNews = from n in ctx.TodaysNews
where n.IsGood == true
select n;
тогда он будет объединять запросы при отправке его на сервер, а не делать два отдельных запроса.Я не уверен, что это работает, когда вы используете IEnumerable<>
или если вам нужно вернуть что-то еще (IQueryable<>
, возможно?).
Редактировать:
Я только что видел ваш ответ на другой постер ниже.Я думаю, я слишком долго печатал / форматировал.Я не знаю ни одного способа применения такого фильтра, но разве наши решения не делают это эффективно?Вы даже можете сделать TodaysNews единственным способом прямого доступа к этому объекту через контекст или что-то в этом роде.