Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 20728|Отговор: 0

[Източник] Като неясна заявка в Linq към SQL

[Копирай линк]
Публикувано в 7.09.2015 г. 23:16:28 ч. | | |
Работата на Подобно е малко подобна, но посоката се е променила. Какво означава това? Даваш низ и търсиш поле в данните, което съдържа този низ. Тоест, даден низ е подмножество на поле. SQL scrip{filter}t се пише по следния начин.


Selec * от таблицата, където бих искал '%AD%'
Selec * от таблицата, където бих искал '%AD'
Selec * от таблицата, където бих искал 'AD%'
Горният процент е жокер, който показва, че полето съдържа стойност, а неизвестната позиция се заменя с %. Първият е да се посочи, че средната част е AD и двата края са неясни. Вторият е AD в края, а предишният е неясен. Третата, напротив, започва с AD и завършва неясно. Съответното твърдение на Линк е:


var q = (от c в db. Клиенти
където c.CustomerID.Contains ("ROUT")
изберете c). ToList();
SQL, който генерира, е


ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник
опитай], [t0]. [Телефон], [t0]. [Факс]
ОТ [dbo]. [Клиенти] AS [t0]
КЪДЕТО [t0]. [CustomerID] КАТО @p0
-- @p0: входен низ (размер = 6; Prec = 0; Скала = 0) [%РАЗБОЙ%]
Завършвайки с ISSA, главен уайлдкард:


var q = (от c в db. Клиенти
където c.CustomerID.EndsWith("ISSA")
изберете c). ToList();
SQL, който генерира, е


ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник
опитай], [t0]. [Телефон], [t0]. [Факс]
ОТ [dbo]. [Клиенти] AS [t0]
КЪДЕТО [t0]. [CustomerID] КАТО @p0
-- @p0: входен низ (размер = 5; Prec = 0; Мащаб = 0) [%ISSA]
Започвайки с ARO, опашката на уайлдкард:


var q = (от c в db. Клиенти
където c.CustomerID.StartsWith("ARO")
изберете c). ToList();
SQL, който генерира, е


ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник
опитай], [t0]. [Телефон], [t0]. [Факс]
ОТ [dbo]. [Клиенти] AS [t0]
КЪДЕТО [t0]. [CustomerID] КАТО @p0
-- @p0: входен низ (размер = 4; Prec = 0; Мащаб = 0) [ARO%]

Linq предоставя и метод, наречен SqlMethods.Like, който изисква първо да се добави пространството от имена System.Data.Linq.SqlClient. Горните три могат да бъдат написани


var q = (от c в db. Клиенти
където SqlMethods.Like(c.CustomerID, "%ROUT%")
изберете c). ToList();
Тук трябва сам да попълниш уайлдкарда, за да кажеш на Линк как сте се съвпаднали. Като какво


var q = (от c в db. Клиенти
където SqlMethods.Like(c.CustomerID, "%ISSA")
изберете c). ToList();
Друг пример:


var q = (от c в db. Клиенти
където SqlMethods.Like(c.CustomerID, "ARO%")
изберете c). ToList();
Най-удивителното при SqlMethods.Like е, че можеш да реализираш уайлдкарти навсякъде с твоите собствени дефинирани wildcard изрази. Като какво


var q = (от c в db. Клиенти
където SqlMethods.Like(c.CustomerID, "A%O%T")
изберете c). ToList();
SQL, който генерира, е


ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник
опитай], [t0]. [Телефон], [t0]. [Факс]
ОТ [dbo]. [Клиенти] AS [t0]
КЪДЕТО [t0]. [CustomerID] КАТО @p0
-- @p0: входен низ (размер = 5; Prec = 0; Скала = 0) [A%O%T]

Най-стандартното е да знаеш, че започва с A и завършва с T, знае стойност O в средата и не знае нищо друго. Просто използвай това.
SQL Server дефинира четири жокера, всички от които са достъпни тук. Те са:
Пример за описание на символа с уайлдкард {filter}tion
% Всеки низ от нула или повече символи. КЪДЕТО заглавие като '%computer%' намира всички заглавия на книги с думата 'computer' навсякъде в заглавието на книгата.
_ (подчертаване) Всеки един знак. КЪДЕТО au_fname КАТО "_ean" намира всички четирибуквени имена, които завършват на ean (Дийн, Шон и т.н.).
[ ] Всеки отделен символ в определения диапазон ([a-f]) или множество ([abcdef]). КЪДЕТО au_lname КАТО '[C-P]arsen' намира фамилните имена на авторите, завършващи на arsen и започващи с всеки отделен знак между C и P, например Carsen, Larsen, Karsen и така нататък.
[^] Всеки отделен символ, който не е в определения диапазон ([^a-f]) или множеството ([^abcdef]). КЪДЕТО au_lname КАТО 'de[^l]%' всички авторски фамилни имена, започващи с de, и където следващата буква не е l.

% представлява низ с нулева дължина или каквато и да е дължина. _ означава знак. [] означава символ в диапазон. [^] означава знак, който не е в определен диапазон
Като какво:


var q = (от c в db. Клиенти
където SqlMethods.Like(c.CustomerID, "A_O_T")
изберете c). ToList();
Просто използвай _, за да представиш персонаж. Генерираният SQL е:


ИЗБЕРЕТЕ [t0]. [CustomerID], [t0]. [Име на компания], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Адрес], [t0]. [Град], [t0]. [регион], [t0]. [Пощенски код], [t0]. [Съветник
опитай], [t0]. [Телефон], [t0]. [Факс]
ОТ [dbo]. [Клиенти] AS [t0]
КЪДЕТО [t0]. [CustomerID] КАТО @p0
-- @p0: входен низ (размер = 5; Prec = 0; Мащаб = 0) [A_O_T]

За Not Like също е много просто, просто добави някакви глупости.


var q = (от c в db. Клиенти
къде! SqlMethods.Like(c.CustomerID, "A_O_T")
изберете c). ToList();

SqlMethods.Like има и параметър, наречен escape character, който се превежда в оператор като следния.


ИЗБЕРЕТЕ колони ОТ таблица КЪДЕТО
колона КАТО '%\%%' ESCAPE '\'
escape е защото поле съдържа специални знаци, като %,_ [ ], които се използват като жокери. Тук идва Escape. Това е нещо свързано със SQL Server.





Предишен:Оптимизация на производителността на уебсайта: Подробно обяснение на настройките за контрол на кеша
Следващ:Руйджие винаги е бил решен какво се случва
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com