Динамический запрос с использованием Linq To SQL по нескольким полям - PullRequest
0 голосов
/ 07 марта 2011

Привет, эксперты У меня есть специальный вопрос о динамическом Linq to Sql. Предположим, мы хотим искать в таблице по двум полям * (LetterNo (строка) и LetterDate (Datetime)) * .OK проблема в том, что пользователь может ввести одно из этих полей или даже оба.

Я искал в интернете и нашел библиотеку "Linq.Dynamic" в ScottGu weblog.but в этой библиотеке, если мы хотим использовать SqlParameter в экспортированной команде, мы должны использовать @ 0 и param для этой проблемы. Я не знаю, сколько полей введено пользователем.

Я хочу использовать один запрос для этого и никакого внешнего инструмента, такого как "Linq Kit PredicateBuilder".

Если я создам строку запроса вручную (и выполню с использованием ExecuteCommand), тогда я откажусь от SqlParameter и риску роста Sql Injenction. Как это можно сделать? спасибо

1 Ответ

1 голос
/ 21 марта 2011

Я подозреваю, что вы хотите сделать что-то вроде следующего:

IQueryable<Letter> query = context.Letters;
if (!string.IsNullOrEmpty(LetterNo))
    query = query.Where(letter => letter.LetterNo == LetterNo);
If (LetterDate.HasValue)
    query = query.Where(letter => letter.LetterDate == LetterDate);

Когда вы выполняете запрос, он объединяет необходимые выражения и выдает один запрос к базе данных на основе ввода пользователя.

...