Я переписываю запрос, который создается в ответ на ввод пользователя в текстовые поля, чтобы обеспечить некоторую защиту от атаки SQL-инъекцией.
SELECT DISTINCT (FileNameID) FROM SurNames WHERE Surname IN
('Jones','Smith','Armitage')
AND FileNameID IN ( SELECT DISTINCT (FileNameID) FROM FirstNames WHERE FirstName
IN ('John','William') )
Может быть задействовано до 3 других таблицв этом процессе.В списках параметров может быть до 50-100 записей, поэтому создание параметризованного запроса утомительно и громоздко.
Я пытаюсь создать запрос Linq, который должен позаботиться о параметризации и обеспечить необходимую мне защиту.
Это дает мне то, что мне нужно
var surnameValues = new[] { "Jones","Smith","Armitage" };
var firstnameValues = new[] { "John","William" };
var result = (from sn in db.Surnames
from fn in db.FirstNames
where surnameValues.Contains(sn.Surname) &&
firstnameValues.Contains(fn.FirstName)
select fn.FileNameID).Distinct().ToArray();
Теперь мне нужен способ динамического создания этого в зависимости от того, выбрал ли пользователь / ввел значения в поля ввода текста фамилии или имени?
Любые указатели будут с благодарностью получены
Спасибо, Роджер