У меня есть форма поиска с необязательным полем «Имя пользователя».Если имя пользователя не указано, должны быть возвращены все совпадения.
Я использую Linq и Sql Server CE 4.0.
Код linq выглядит следующим образом ->
from p in context.Accounts
where (name==string.Empty || p.UserName.Contains(name))
При использовании Sql Server CE выдается следующая ошибка
"Параметр не разрешен в этом месте. Убедитесь, что знак '@' находится в допустимом месте или что параметры в этом месте вообще допустимыSQL-выражение. "
Есть ли какой-то другой подход, который я могу использовать, чтобы иметь необязательные предложения Where в Linq?
К вашему сведению следующее
from p in context.Accounts
where (string.IsNullOrEmpty(name) || p.UserName.Contains(name))
дает мне ошибку
"Указанное значение аргумента для функции недопустимо. [Аргумент # = 1, Имя функции (если известно) = isnull]"}
Это связано с тем, что Sql Server CE не поддерживает IsNull,Я просто делаю следующее, если параметр Name имеет значение Null.
if (name == null)
name = string.Empty;