Как убрать чувствительность к регистру при поиске в поле данных ASP.Net Query Extender?

Я применил расширитель запросов к своему текстовому полю для трех полей. Работает, но чувствителен к регистру. Например, если поле имени пользователя имеет имя "AWAIS", и я ищу "awais", оно не выполняет поиск и наоборот. Как я могу удалить чувствительность?

Мой код

    <td>
                <asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="BookStore.Bussines.Entities.BookStoreEntities"
                    OnSelecting="LinqDataSource1_Selecting">
                </asp:LinqDataSource>
                <asp:QueryExtender ID="qeSearch" runat="server" TargetControlID="LinqDataSource1">
                    <asp:SearchExpression DataFields="DISTRIBUTOR_NAME,DISTRIBUTOR_CODE,DISTRIBUTOR_URL" SearchType="Contains">
                        <asp:ControlParameter ControlID="txtSearchDistributor" />
                    </asp:SearchExpression>
                </asp:QueryExtender>
            </td>

3 ответа

Решение

Согласно документации:

Чувствительность к регистру в поисковом выражении зависит от поставщика LINQ, указанного в элементе управления QueryExtender.

Если поставщик LINQ, который вы используете в элементе управления QueryExtender, поддерживает чувствительность к регистру, вы можете использовать свойство ComparisonType для включения или игнорирования чувствительности к регистру.

Другая возможность - сопоставление базы данных

Возможно, ваша база данных настроена с учетом регистра. Несколько ссылок, если вы используете SQL Server.

Описание сортировки SQL Server

Описание подборок

Если вы посмотрите документацию по MSDN для этого элемента управления, вы увидите, как обрабатывается чувствительность к регистру:

Чувствительность к регистру в поисковом выражении зависит от поставщика LINQ, указанного в элементе управления QueryExtender.

Попробуй это:

Задавать SearchExpression.ComparisonType в StringComparison.OrdinalIgnoreCase

<asp:SearchExpression DataFields="DISTRIBUTOR_NAME,DISTRIBUTOR_CODE,DISTRIBUTOR_URL" SearchType="Contains" ComparisonType=StringComparison.OrdinalIgnoreCase>
                        <asp:ControlParameter ControlID="txtSearchDistributor" />
                    </asp:SearchExpression>

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.expressions.searchexpression.comparisontype%28v=vs.110%29.aspx

https://msdn.microsoft.com/en-us/library/system.stringcomparison%28v=vs.110%29.aspx

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