SELECT imie, nazwisko
FROM Osoba
WHERE imie LIKE ‘%an’
SELECT imie, nazwisko
FROM Osoba
WHERE imie LIKE ‘an%’
SELECT imie, nazwisko
FROM Osoba
WHERE imie LIKE ‘%an%’
są często stosowane tam, gdzie użytkownik szuka jakiejś konkretnej informacji ale nie zna jej pełnej nazwy. LINQ nie zawiera w swojej składni operatora like, można natomiast wykorzystać funkcje działające na łańcuchach.
1. StartsWith("string"):
var q = from a in db.Osobas
where a.Imie.StartsWith("pa")
select a.Imie;
Wyrażenie to wygeneruje następujące zapytanie do bazy danych:
SELECT [t0].[Imie]
FROM [dbo].[Osoba] AS [t0]
WHERE [t0].[Imie] LIKE 'pa%'
2. EndsWith("string")
var q = from a in db.Osobas
where a.Imie.EndsWith("pa")
select a.Imie;
Wyrażenie to wygeneruje następujące zapytanie do bazy danych:
SELECT [t0].[Imie] FROM [dbo].[Osoba] AS [t0] WHERE [t0].[Imie] LIKE '%pa'
3. Contains("string")
var q = from a in db.Osobas
where a.Imie.Contains("pa")
select a.Imie;
Wyrażenie to wygeneruje następujące zapytanie do bazy danych:
SELECT [t0].[Imie] FROM [dbo].[Osoba] AS [t0] WHERE [t0].[Imie] LIKE '%pa%'
Jak więc widać mamy całą gamę funkcji dzięki którym możemy w łatwy sposób generować zapytania do bazy danych z wykorzystaniem operatora LIKE.
Istnieje jeszcze jeden sposób wykorzystania tego operatora. Dla niektórych może się on wydać bardziej "naturalny" od wykorzystywania funkcji.
Dodając do naszego projektu przestrzeń:using System.Data.Linq.SqlClient;
Uzyskujemy dostęp do kilku przydatnych funkcji w klasie
SqlMethods
Przykład:
var q = from a in db.Osobas
where SqlMethods.Like(a.Imie, "p_o%")
select a.Imie;
Tak skonstruowane zapytanie pozwoli nam wyszukać wszystkie wyrazy których pierwsza litera to p, druga dowolna, trzecia o a kolejne dowolne. Czyż to nie proste?
Brak komentarzy:
Prześlij komentarz