Útmutató: Lekérdezési eredmények szűrése LINQ használatával (Visual Basic)
Language-Integrated lekérdezés (LINQ) megkönnyíti az adatbázis-információk elérését és a lekérdezések végrehajtását.
Az alábbi példa bemutatja, hogyan hozhat létre egy új alkalmazást, amely lekérdezéseket hajt végre egy SQL Server-adatbázison, és szűri az eredményeket egy adott érték alapján a Where
záradék használatával. További információ: Where Clause.
A cikkben szereplő példák a Northwind mintaadatbázist használják. Az adatbázis beszerzéséhez lásd: Mintaadatbázisok letöltése.
Jegyzet
Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a Visual Studio felhasználói felületének egyes elemeihez az alábbi utasításokban. Ezeket az elemeket a Visual Studio-kiadás és a használt beállítások határozzák meg. További információért lásd: Az IDE személyre szabása.
Adatbázis-kapcsolat létrehozása
A Visual Studio-ban nyissa meg a Server Explorer/Database Explorer-t a Nézet menüben található Server Explorer/Database Explorer-ra kattintva.
Kattintson a jobb egérgombbal a Adatkapcsolatok elemre a Server Explorer,/Database Explorer területen, majd kattintson a Kapcsolat hozzáadásaparancsra.
Adjon meg érvényes kapcsolatot a Northwind mintaadatbázishoz.
LINQ-t tartalmazó projekt hozzáadása AZ SQL-fájlhoz
A Visual Studióban a Fájl menüben vigye az egérmutatót az Új fölé, majd kattintson a Projektparancsra. Projekttípusként válassza a Visual Basic Windows Forms-alkalmazás lehetőséget.
A Project menüben kattintson az Új elem hozzáadásagombra. Válassza ki a LINQ-t az SQL-osztályok elemsablonhoz.
Nevezze el a fájlt
northwind.dbml
. Kattintson a hozzáadása gombra. A northwind.dbml fájlhoz megnyílik az Object Relational Designer (O/R Designer).
Táblák hozzáadása lekérdezéshez az O/R Designerhez
A Server Explorer/Database Explorerterületen bontsa ki a Northwind-adatbázishoz való kapcsolatot. Nyissa meg a Táblák mappát.
Ha bezárta az O/R Designert, újra megnyithatja a korábban hozzáadott northwind.dbml fájlra duplán kattintva.
Kattintson a Vevők táblára, és húzza a tervezőfelület bal oldali ablaktáblájára. Kattintson a Rendelések táblára, és húzza a tervező bal oldali ablaktáblájára.
A tervező új
Customer
ésOrder
objektumokat hoz létre a projekthez. Figyelje meg, hogy a tervező automatikusan észleli a táblák közötti kapcsolatokat, és gyermektulajdonságokat hoz létre a kapcsolódó objektumokhoz. Az IntelliSense például megmutatja, hogy aCustomer
objektumOrders
tulajdonságot tartalmaz az adott ügyfélhez kapcsolódó összes rendeléshez.Mentse a módosításokat, és zárja be a tervezőt.
Mentse a projektet.
Kód hozzáadása az adatbázis lekérdezéséhez és az eredmények megjelenítéséhez
A eszközkészlet-ből húzza a DataGridView vezérlőt a projekt alapértelmezett Form1 Windows-formájára.
Kattintson duplán az Űrlap1 gombra, ha kódot szeretne hozzáadni az űrlap
Load
eseményéhez.Amikor táblákat adott hozzá az O/R Designerhez, a tervező hozzáadott egy DataContext objektumot a projekthez. Ez az objektum tartalmazza azt a kódot, amely szükséges a táblák eléréséhez, továbbá minden egyes táblához tartozik egyéni objektum és gyűjtemény is. A projekt DataContext objektuma a .dbml fájl neve alapján lesz elnevezve. Ebben a projektben a DataContext objektum neve
northwindDataContext
.Létrehozhatja a DataContext egy példányát a kódban, és lekérdezheti az O/R Designer által megadott táblákat.
Adja hozzá a következő kódot az
Load
eseményhez az adatkörnyezet tulajdonságaiként közzétett táblák lekérdezéséhez. A lekérdezés szűri az eredményeket, és csak aLondon
található ügyfeleket adja vissza.Dim db As New northwindDataContext Dim customers_London = From cust In db.Customers Where cust.City = "London" Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.City, cust.Country DataGridView1.DataSource = customers_London
Nyomja le az F5 billentyűt a projekt futtatásához és az eredmények megtekintéséhez.
Az alábbiakban néhány további szűrőt is kipróbálhat.
Dim companies_H = From cust In db.Customers Where cust.Orders.Count > 0 And cust.CompanyName.StartsWith("H") Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.Country Dim customers_USA = From cust In db.Customers Where cust.Orders.Count > 15 And cust.Country = "USA" Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.Country