Возможно ли иметь автоматические фильтры в Linq to SQL? - PullRequest
1 голос
/ 21 сентября 2010

Я работаю в системе, в которой клиент решил использовать статус для записей.Одним из них является X за исключением.Я хочу знать, возможно ли запускать запросы linq, которые автоматически добавят что-то вроде

where status != 'X'

, чтобы не показывать «исключенные» записи.Спасибо!

Ответы [ 3 ]

5 голосов
/ 21 сентября 2010

Вроде. Запросы в 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". Конечно, тогда проблема в том, что вам придется прыгать через обручи, если вы не не хотите отфильтрованный список ...

0 голосов
/ 21 сентября 2010

LINQ настолько прост, что написание вопроса практически даст вам ответ!

where status != "X" 

Я бы предпочел

.Where(record => record.status != "X")

, что делает то же самое.Единственное, что вы пропустили, это двойные кавычки, потому что это строка, а не символ.

0 голосов
/ 21 сентября 2010

После чего вы можете получить Dynamic LINQ .Это вспомогательная библиотека, которую вы можете использовать для анализа выражений LINQ из строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...