Útmutató: Adatok száma, összege vagy átlaga a LINQ használatával (Visual Basic)
A nyelvvel integrált 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 olyan új alkalmazást, amely lekérdezéseket hajt végre egy SQL Server-adatbázison. A minta az és a záradékok használatával számolja, összegzi és átlagozza az Aggregate
Group By
eredményeket. További információ: Összesítési záradék és Csoportosítási záradék.
A jelen témakör példái a Northwind mintaadatbázist használják. Ha nem rendelkezik ezzel az adatbázissal a fejlesztői számítógépén, letöltheti azt a Microsoft letöltőközpontból. Útmutatásért lásd : Mintaadatbázisok letöltése.
Feljegyzés
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ó: Az IDE személyre szabása.
Adatbázis-kapcsolat létrehozása
A Visual Studióban nyissa meg a Server Explorer/Adatbázis-kezelőt a Nézet menü Server Explorer/Adatbázis-kezelő parancsára kattintva.
Kattintson a jobb gombbal az Adat Csatlakozás parancsra a Kiszolgálókezelő/adatbázis-kezelőjében, majd kattintson az Add Csatlakozás ion (Csatlakozás ion hozzáadása) parancsra.
Adjon meg érvényes kapcsolatot a Northwind mintaadatbázishoz.
LINQ-t tartalmazó projekt hozzáadása AZ SQL-fájlhoz
A Visual Studio Fájl menüjében mutasson az Új pontra, majd kattintson a Project gombra. Projekttípusként válassza a Visual Basic Windows Forms-alkalmazást .
A Projekt menüben kattintson az Új elem hozzáadása elemre. Válassza ki a LINQ to SQL Classes elemsablont.
A fájl neve legyen
northwind.dbml
. Kattintson a Hozzáadás gombra. Az Object Relational Tervező (O/R Tervező) meg van nyitva a northwind.dbml fájlhoz.
Táblák hozzáadása lekérdezéshez az O/R Tervező
A Server Explorer/Database Explorerben bontsa ki a Northwind-adatbázishoz való kapcsolatot. Bontsa ki a Táblák mappát.
Ha bezárta az O/R Tervező, ú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ő 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 azt mutatja, hogy azCustomer
objektum rendelkezik azOrders
adott ügyfélhez kapcsolódó összes rendelés tulajdonságával.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
Az Eszközkészletből húzzon egy vezérlőt DataGridView a projekt alapértelmezett Windows-űrlapjára, a Form1 formátumra.
Az Űrlap1 gombra duplán kattintva kódot adhat hozzá az
Load
űrlap eseményéhez.Amikor táblákat adott hozzá az O/R Tervező, a tervező hozzáadott egy DataContext objektumot a projekthez. Ez az objektum tartalmazza azt a kódot, amelyhez hozzá kell férnie a táblákhoz, valamint az egyes táblák egyes objektumaihoz és gyűjteményeihez. A DataContext projekt objektumának neve a .dbml fájl neve alapján történik. Ebben a projektben az DataContext objektum neve
northwindDataContext
.Létrehozhat egy példányt a DataContext kódban, és lekérdezheti az O/R Tervező által megadott táblákat.
Adja hozzá az alábbi kódot az eseményhez,
Load
hogy lekérdezhesse azokat a táblákat, amelyek az ön DataContext és a számláló, az összeg és az átlageredmények tulajdonságaiként vannak közzétéve. A minta a záradékot használja egyetlenAggregate
eredmény lekérdezésére, a záradék pedig aGroup By
csoportosított eredmények átlagának megjelenítésére.Dim db As New northwindDataContext Dim msg = "" Dim londonCustomerCount = Aggregate cust In db.Customers Where cust.City = "London" Into Count() msg &= "Count of London Customers: " & londonCustomerCount & vbCrLf Dim averageOrderCount = Aggregate cust In db.Customers Where cust.City = "London" Into Average(cust.Orders.Count) msg &= "Average number of Orders per customer: " & averageOrderCount & vbCrLf Dim venezuelaTotalOrders = Aggregate cust In db.Customers Where cust.Country = "Venezuela" Into Sum(cust.Orders.Count) msg &= "Total number of orders from Customers in Venezuela: " & venezuelaTotalOrders & vbCrLf MsgBox(msg) Dim averageCustomersByCity = From cust In db.Customers Group By cust.City Into Average(cust.Orders.Count) Order By Average DataGridView1.DataSource = averageCustomersByCity 'Another way to grab the count and sum londonCustomerCount = (From cust in db.Customers Where cust.City = "London").Count() venezuelaTotalOrders = (From cust in db.Customers Where cust.Country = "Venezuela" Select cust.Orders).Sum()
Nyomja le az F5 billentyűt a projekt futtatásához és az eredmények megtekintéséhez.