LINQ , som står för Språk - Integrated Query , är en funktion av Visual Basic språket som låter dig utföra frågor och andra operationer på datakällor . En typ av datakälla är XML-kod , vars användardefinierade taggar kan användas som databasfält . Denna handledning tillåter användaren att göra en sökning i en enkel XML-data bord . Användaren anger titeln på en film , som är formaterad i en LINQ fråga. Frågan syftar filmen med matchande titel och returnerar regissör från matchande filmen . Konfigurera Project
Innan skriva programmet , måste du lägga upp ett projekt i Visual Basic . Välj Arkiv > Nytt projekt > Windows Forms Application . I Designer fönstret , placera en textruta och en knapp på användarens formuläret . Dubbelklicka på knappen för kontrollen och lägga till denna kod till kroppen av Button1_Click händelsen :
XLinqQuery ( TextBox1.Text ) katalog
Uttalandet anropar en funktion som gör LINQ databasfrågan när användaren trycker knappen på formuläret . Ovanför Button1_Click funktionen skriver funktionen :
Public Sub XLinqQuery ( ByVal strMovie As String ) katalog
Dim MyMovies = _ < filmen year_released = " 1977 " regissören = " George Lucas " > Star Wars < /movie >
Excalibur < /movie >
< /my_movies >
Dim query = _From m. I MyMovies . _Where m.Value = strMovie _Select m
för varje resultat I queryTextBox2.Text = resultat . @ directorNextEnd Sub
Köra programmet
Kör programmet genom att trycka på " F5 ". I textrutan anger " Star Wars " och tryck på knappen . Programmet kommer att söka i databasen för att hitta regissören av filmen vars titel du angav . Efter att ha sett " George Lucas " visas , ange en annan filmtitel : " Excalibur ", och tryck på knappen för att se regissören John Boorman namn visas
Exploring koden
Läs om funktionen XlinqQuery , vilket gör databasen arbete . Den mini inline databas för LINQ frågan körs på är en bit av XML -kod . Du kan använda LINQ för att söka andra typer av databaser , både fjärr ( online) och de som lagras på din dator .
Faktisk LINQ
Själva LINQ frågan är så följande : .
Dim query = _From m I MyMovies _Where m.Value = strMovie _Select m
Även om dess typ inte uttryckligen anges , den " query " efter Dim är en variabel . Den kompletta Dim frågeuppgift inte köra frågan , definierar det bara det . Påståendet att faktiskt exekverar frågan är följande: .
För Varje resultat I queryTextBox2.Text = resultat @ directorNext
För varje iteration av denna slinga , resultatet identifieraren håller utsignalen från fråga , vilket är all data i mellan XML-taggarna och < /film > , för ett speciellt par av dessa taggar . Den särskilda tillskriver vi drar ur resultatet variabeln är direktör attributet , men du kan också välja @ year_released .
Du kan läsa om LINQ-frågor genom att mixtra med det här programmet . Börja med att ändra filmdatabas . Lägg till fler filmer och regissörer - eller ändra i databasen helt att reflektera dina egna intressen . Lägg till dina egna fält - aka attribut - att ersätta regissören och year_released fält från filmdatabas . Istället för att söka efter en post i databasen med dess namn ( t.ex. " Star Wars " ) , kan du söka efter fält /attribut . Om du sökte genom year_released attribut i filmdatabas , WHERE-satsen i din fråga skulle se ut så här : När m @ year_released = intYear . . Här berättar ampersand frågan motorn som du vill matcha på ett XML-attribut , i motsats till ett värde ( t.ex. " Star Wars " ) .