Использование Linq и Trim.Text для поиска

Я пытаюсь преобразовать этот тестовый код в C#, и у меня возникла проблема с командой Trim. Кто-нибудь делал что-то подобное в C#, собираясь использовать это с текстовым полем для поиска на странице aspx.

Dim q = From b In db.Blogs _
        Where b.BlogContents.Contains(txtSearch.Text.Trim()) Or _
              b.BlogTitle.Contains(txtSearch.Text.Trim()) _
        Select b
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
2 931
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

не уверен, что вы спрашиваете, но функция Trim в C# такая же.

http://msdn.microsoft.com/en-us/library/t97s7bs3.aspx

Ответ принят как подходящий

В чем проблема? А что это за LINQ-провайдер? Набор в памяти (LINQ-to-Objects)? Или LINQ-to-SQL? Или LINQ-to-Entities?

I подозревать вы получаете что-то о провайдере LINQ db, не зная о Trim () - в этом случае попробуйте сначала выполнить обрезку:

string s = txtSearch.Text.Trim();
var q = from b in db.Blogs
        where b.BlogContents.Contains(s) || b.BlogTitle.Contains(s)
        select b;

Это решает три отдельные проблемы два:

1: захватывает: в оригинале именно txtSearch захватывается в запрос, который имеет сложности; сначала оценивая Trim, захватывается именно s, который представляет собой простую неизменяемую строку

2: сложность выражения: с LINQ на основе выражений (т.е. с базой данных) выражение весь (включая .Text, .Trim и т. д.) Является частью выражения. Если поставщик LINQ не распознает один или несколько из них, он завершится ошибкой. Если сначала свести его к строке, все, что нужно обработать провайдеру LINQ, - это строка, с которой каждый провайдер должен быть доволен.

(добавлен) 3: повторное вычисление: LINQ-to-Objects очень буквальный; если вы попросите его использовать сложную операцию в Where (и т. д.), это воля, даже если очевидно, что ответ не меняется для каждой строки; то есть txtSearch.Text.Trim() не должен изменяться для каждой строки, так зачем оценивать его для каждой строки? Оцените его перед запросом, и это будет сделано только один раз.

Я тоже столкнулся с этим при переходе на C#. Intellisense намного хуже в C#: <

Убедитесь, что вы не оставили () после обрезки.

Другие вопросы по теме