Sharepoint Query с CAML и Accents - PullRequest
       0

Sharepoint Query с CAML и Accents

1 голос
/ 21 октября 2011

Я пытаюсь построить Запрос с CAML, и кажется, что он работает довольно хорошо, но у меня проблема, я хочу, чтобы Caml нашел значение, даже если в нем есть акцентированные слова или нет.

Например, теперь, если я ищу «Карлос», caml получит мне список элементов, содержащий «Карлос», «Карлос» или «КаРлОс» или любую комбинацию заглавных или строчных букв.Теперь я хочу, чтобы он получал и меня с буквами с акцентом, например, он должен возвращать «Карлос» или «Карлос» или «Карлос» ... ¿Есть ли вариант?

CAML запрос Яиспользовать довольно просто, это выглядит в списке Sharepoint ...

carlos

Спасибо за любые комментарии !!

Ответы [ 2 ]

1 голос
/ 21 октября 2011

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

public static string Normalizarstring(this string cadena)
        {
            StringBuilder sb = new StringBuilder();

            cadena.Normalize(NormalizationForm.FormD).ToCharArray().ToList()
                .ForEach(caracter => sb.Append((CharUnicodeInfo.GetUnicodeCategory(caracter) != UnicodeCategory.NonSpacingMark) ? caracter.ToString() : ""));

            return (sb.ToString().Normalize(NormalizationForm.FormC));
        }

Еще раз спасибо !!!

1 голос
/ 21 октября 2011

Механизм CAML принимает этот убогий «язык запросов», переводит открытые имена / значения из схемы в внутренний формат, создает соответствующий запрос SQL и затем отправляет весь беспорядок на SQL Server.

Правила сортировки, включая нечувствительность, являются частью SQL Server, а не самого SharePoint (или механизма CAML) (, хотя могут быть внесены незначительные ошибки; вас предупредили! ).

SQL Server поддерживает различные COLLATIONS (включая те, которые не чувствительны к акценту, а также "стандартны" без учета регистра). Однако SharePoint работает в довольно ограниченной «поддерживаемой» конфигурации - изменение параметров сортировки может быть нежелательным.

Все базы данных, необходимые для SharePoint Server, используют параметры сортировки Latin1_General_CI_AS_KS_WS.

Однако может иметь возможность взломать соответствующую таблицу SQL, поддерживающую список с помощью ALTER TABLE и указать альтернативное сопоставление, например SQL_Latin1_General_Cp1_CI_AI (AI= Нечувствительный к акценту, AS = чувствительный к акценту). Ваш пробег может варьироваться: это не поддерживаемый сценарий.

Другой вариант может заключаться в использовании триггера элемента и кода для «нормализации» всех значений - скажем, «Карлос».(Эти нормализованные значения будут храниться в другом столбце.) Кодовый компонент может использовать всю мощь .NET для этого шага, но также вносит дополнительные сложности / требования.

Счастливое кодирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...