Link to SQL Съдържа при търсене по име

Търся в SQL 2005 DB, в който има колона с пълно име. Искам да мога да проверя тази колона и да подредя резултатите според тяхната уместност.

Използвам хубава система за поръчка, която намерих в SO, но за съжаление не работи както бих искал и изглежда, че се дължи на несъвпадение на функционалността „съдържа“.

Ето кода:

 private static int QueryOrder(string query, string name)
{
    if (name == query)
        return -1;
    if (name.Contains(query))
        return 0;

    return 1;
}

Сега проблемът е, че това не работи в следния сценарий:

Данни в колоната с пълно име в базата данни: Joey JoeJoe Junior Shabbadoo

Заявка за търсене: Joey Shabbadoo

Методът queryorder не съвпада с „contains“, тъй като не вижда полето за пълно име като съдържащо текста на заявката.

Начинът, по който подреждам резултатите, е следният

 peopleList = peopleList.OrderBy(p => QueryOrder(fullName, p.FullName)).ToList();

И така, има ли начин да се използва LINQ, за да се направи това или трябва просто да тръгна по sproc маршрута?


person Full Time Skeleton    schedule 06.05.2015    source източник
comment
бихте могли да разделите заявката за търсене на пространството и да направите проверка и за двете части?   -  person Thewads    schedule 06.05.2015
comment
Актуализирах въпроса с малко повече подробности. Обмислях да разделя, но не съм сигурен как след това да подредя резултатите.   -  person Full Time Skeleton    schedule 06.05.2015


Отговори (1)


LINQ е прав. „Джоуи Шабадо“ не е contained във вашия низ за търсене. За да може съдържа да върне истина, пълната последователност от знаци трябва да съвпада с една пълна последователност в другия низ.

В зависимост от това какво определяте като „съвпадения“, можете да се обърнете към регулярни изрази и да опитате (1) да разделите заявката си и след това да съпоставите с \AJoey.+Shabbadoo\z с помощта на регулярен израз

person Mario The Spoon    schedule 06.05.2015
comment
Не казвам, че LINQ е грешен, просто функцията съдържа не работи в моя сценарий. - person Full Time Skeleton; 06.05.2015
comment
Използвал съм regex преди, но не и за нещо подобно. Ще проуча доколко е подходящо. - person Full Time Skeleton; 06.05.2015