Linq с дополнительными предложениями Where и Sql Server CE

У меня есть форма поиска с необязательным полем имени пользователя. Если имя пользователя не указано, должны быть возвращены все совпадения.

Я использую 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;
5
задан Kenoyer130 27 February 2011 в 23:42
поделиться