Aaron Bo Ответов: 1

Linq to SQL, исключение : для метода string. contains поддерживаются только параметры, которые могут быть вычислены на клиенте


всем привет:

Я встретил вопрос, который позволяет мне быть обеспокоенным сегодня, хотя он не может произвести изменение положения строки кода, я хочу знать, почему это происходит.


Шаги:
1. Я использовать LINQ для получения данных из базы данных, пример кода:

Цитата:
var ret = (из c в getComment
присоединяйтесь к CR в контексте.Предстанет перед судом&ЛТ;commentreply и GT;() на C.Идентификатор равен КЛ.CommentID в АСБ
присоединяйтесь к оу в контексте.Предстанет перед судом&ЛТ;ownercomment и GT;() на C.Идентификатор равен ОС.CommentID в ОК
из cr1 в crs. DefaultIfEmpty()
где c. EnumDataEntityStatus == EnumDataEntityStatus.Обычный || IsForUserInfoSearch
из oc1 в ocs. DefaultIfEmpty()
где c. EnumDataEntityStatus == EnumDataEntityStatus.Обычный || IsForUserInfoSearch
выберите new CommentSearchModel { comment = c, reply = cr1, ownerComment = oc1 });


2. там две строчки кода, а и Б, и , там много "LINQ в предложении, где" код строки в передней части A и B.

А есть
ret = ret.Where(P => P.comment.OrderNumber.Contains(req.OrderNumber.Trim()));


Б есть
var excludeIDList = ret.Where(q => ((now - q.comment.CheckOutDate.Date).TotalDays > 30 && q.comment.EnumCommentStatus == 0 && q.comment.EnumOwnerCommentedStatus == 0) || q.comment.EnumCommentStatus == EnumCommentStatus.Expired).Select(x => x.comment.ID);

if (req.SpecificCondition == EnumSpecificQueryCondition.AllForMerchant)
    ret = ret.Where(q => !excludeIDList .Contains(q.comment.ID));


B выполняется, после чего будет создан новый объект "
{System.Data.Linq.DataQuery<TuJia.Business.Customer.Contract.CommentSearchModel>}
" .

3. вопрос:

Если A находится перед B, как выполнить ret. toList (), будет создано исключение.
Если B находится впереди A, то при выполнении ret. toList () будет создано исключение.
4. Исключение:
поскольку я использую китайскую операционную систему, мои исключения-китайские, я переведу их на английский, но, возможно, это будет неправильно.

Исключение:
Цитата:
Для метода String.Содержит, поддерживаются только параметры, которые могут быть оценены на клиенте


Китайский:
内容:对于方法 String.Contains,只支持可在客户端上求值的参数


5. Наконец, я надеюсь, что каждый может предоставить мне какую-либо информацию об этом, я хочу знать причину, по которой производят исключение.

Цитата:
Заранее спасибо!


Что я уже пробовал:

<pre lang="c#">

1 Ответов

Рейтинг:
0

Atlapure Ambrish

Попробуйте использовать SqlMethods.Как будто вместо того, чтобы содержать.

Подобный этому...

где SqlMethods.Like (columnName,"%"+ключевое слово+"%")


Aaron Bo

Спасибо! но я хочу знать причину, по которой они отличаются.