Entityframework будет параметризировать ваши запросы, если вы зададите его в следующем формате:
db.something.FromSql("SELECT * FROM yourTable WHERE AuthorId = {0}", id)
Является ли x.Field полем формы с фиксированным числом возможностей?то есть название, имя и т. д. Если это так, то что-то вроде следующего:
var sqlstring = new StringBuilder();
var sqlp = new List<SqlParameter>();
var i = 0;
foreach (var x in wp)
{
var param = "@param" + i.ToString();
if (i!=0)
{
sqlstring.Append($" AND {x.Field} = " + param);
sqlp.Add(new SqlParameter(param, x.Value));
}
if (i==0)
{
sqlstring.Append($"WHERE {x.Field} = " + " @param" + i.ToString());
sqlp.Add(new SqlParameter(param, x.Value));
}
i++;
}
Затем вам нужно будет сделать что-то вроде этого:
db.something.FromSql(sqlstring.ToString(), sqlp.ToArray())
Возможно, будет лучше / чищено это должно сработать.