Вроде. Запросы в Linq оцениваются лениво, поэтому вы можете добавлять к ним условия так, как вам нравится, прежде чем получать первый результат, и это все равно приведет к использованию «оптимального» SQL.
Например:
// an extension method on the LINQ context:
public static IQueryable<Story> FilteredStories(this DbContext db)
{
return from story in db.Stories where status != "X" select story;
}
// ...later...
var stories = from story in db.FilteredStories()
where title = "Something"
select story;
foreach(var story in stories)
{
// whatever...
}
Вы также можете «скрыть» базовый контекст LINQ и всегда проходить через класс-оболочку, который добавляет условие status != "X"
. Конечно, тогда проблема в том, что вам придется прыгать через обручи, если вы не не хотите отфильтрованный список ...