Megosztás a következőn keresztül:


Standard lekérdezési operátorok áttekintése (Visual Basic)

A LINQ-mintát alkotó metódusok a szabványos lekérdezési operátorok . Ezeknek a módszereknek a többsége szekvenciákon működik, ahol a sorozat olyan objektum, amelynek típusa implementálja az interfészt vagy az IEnumerable<T> interfészt IQueryable<T> . A standard lekérdezési operátorok olyan lekérdezési képességeket biztosítanak, mint a szűrés, a vetítés, az összesítés, a rendezés és egyebek.

A LINQ standard lekérdezési operátorok két halmaza létezik, az egyik típusobjektumokon IEnumerable<T> , a másik pedig típusobjektumokon IQueryable<T>működik. Az egyes csoportokat alkotó metódusok az osztályok és Queryable az Enumerable osztályok statikus tagjai. Ezek az általuk üzemeltetett típusú bővítménymetelyekként vannak definiálva. Ez azt jelenti, hogy statikus metódusszintaxissal vagy példánymetódus-szintaxissal hívhatók meg.

Ezen kívül számos szabványos lekérdezési operátor metódus működik a nem az alapján vagy IQueryable<T>.IEnumerable<T> A Enumerable típus két ilyen metódust határoz meg, amelyek mindkét típusú IEnumerableobjektumon működnek. Ezek a metódusok Cast<TResult>(IEnumerable) OfType<TResult>(IEnumerable)lehetővé teszik, hogy egy nem paraméterezett vagy nem általános gyűjtemény lekérdezhető legyen a LINQ-mintában. Ezt egy erősen gépelt objektumgyűjtemény létrehozásával teszik meg. Az Queryable osztály két hasonló metódust határoz meg, Cast<TResult>(IQueryable) amelyek OfType<TResult>(IQueryable)típusobjektumokon Queryableműködnek.

A szabványos lekérdezési operátorok eltérőek a végrehajtásuk időzítésében attól függően, hogy egy adott vagy egy értéksort adnak vissza. Azok a metódusok, Average amelyek egy adott értéket adnak vissza (például és Sum) azonnal végrehajtják. A sorozatot visszaadó metódusok elhalasztják a lekérdezés végrehajtását, és egy számbavehető objektumot adnak vissza.

A memóriabeli gyűjteményeken működő metódusok, vagyis a kiterjesztő IEnumerable<T>metódusok esetében a visszaadott számbavételi objektum rögzíti a metódusnak átadott argumentumokat. Az objektum számbavételekor a rendszer a lekérdezési operátor logikáját alkalmazza, és visszaadja a lekérdezési eredményeket.

Ezzel szemben a kiterjesztő IQueryable<T> metódusok nem implementálnak lekérdezési viselkedést, hanem létrehoznak egy kifejezésfát, amely a végrehajtandó lekérdezést jelöli. A lekérdezés feldolgozását a forrásobjektum IQueryable<T> kezeli.

A lekérdezési metódusokra irányuló hívások egyetlen lekérdezésben összefűzhetők, ami lehetővé teszi, hogy a lekérdezések tetszőlegesen összetettek legyenek.

Az alábbi példakód bemutatja, hogyan használhatók a szabványos lekérdezési operátorok a szekvencia információinak lekérésére.

Dim sentence = "the quick brown fox jumps over the lazy dog"
' Split the string into individual words to create a collection.
Dim words = sentence.Split(" "c)

Dim query = From word In words
            Group word.ToUpper() By word.Length Into gr = Group
            Order By Length _
            Select Length, GroupedWords = gr

Dim output As New System.Text.StringBuilder
For Each obj In query
    output.AppendLine(String.Format("Words of length {0}:", obj.Length))
    For Each word As String In obj.GroupedWords
        output.AppendLine(word)
    Next
Next

'Display the output
MsgBox(output.ToString())

' This code example produces the following output:
'
' Words of length 3:
' THE
' FOX
' THE
' DOG
' Words of length 4:
' OVER
' LAZY
' Words of length 5:
' QUICK
' BROWN
' JUMPS

Lekérdezési kifejezés szintaxisa

A gyakran használt standard lekérdezési operátorok némelyike dedikált C# és Visual Basic nyelvi kulcsszószintaxissal rendelkezik, amely lehetővé teszi számukra, hogy egy lekérdezési kifejezés részeként legyenek meghívva. A dedikált kulcsszavakkal és azok szintaxisával rendelkező szabványos lekérdezési operátorokról további információt a Lekérdezési kifejezés szintaxisa standard lekérdezési operátorokhoz (Visual Basic) című témakörben talál.

A standard lekérdezési operátorok kiterjesztése

A szabványos lekérdezési operátorok készletét kibővítheti a céltartománynak vagy technológiának megfelelő tartományspecifikus metódusok létrehozásával. A szabványos lekérdezési operátorokat saját implementációkra is lecserélheti, amelyek további szolgáltatásokat nyújtanak, például távoli kiértékelési, lekérdezésfordítási és optimalizálási szolgáltatásokat. Lásd AsEnumerable egy példát.

Az alábbi hivatkozások olyan témakörökre mutatnak, amelyek további információkat nyújtanak a különböző szabványos lekérdezési operátorokról a funkciók alapján.

Lásd még