Поля должны быть статическими.Вы не можете использовать подстановочные знаки в имени поля.Это расширение Where
только строит запрос Entity SQL внутри.Entity SQL следует тем же правилам, что и обычный SQL.
Редактировать:
Правильный код:
public List<tblBook> GetBook(string NameField, string Value)
{
return this.Entities.Book.Where(
String.Format("it.{0} NOT LIKE @p0", NameField),
new ObjectParameter("p0", string.Format("%{0}%", Value))).ToList();
}
}
Вы должны передать имя всего поля и подтвердить его - EntityТакже существуют SQL-инъекции.