У меня есть форма поиска с необязательным полем имени пользователя. Если имя пользователя не указано, должны быть возвращены все совпадения.
Я использую Linq и Sql Server CE 4.0.
Код linq выглядит следующим образом ->
from p in context.Accounts
where (name==string.Empty || p.UserName.Contains(name))
С Sql Server CE это вызывает следующее error
«Параметр не разрешен в этом месте. Убедитесь, что знак '@' находится в допустимом месте или что параметры вообще допустимы в этом операторе SQL.»
Есть ли другой подход, который я могу использовать иметь дополнительные предложения Where в Linq?
FYI следующее
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;