Lekérdezések a LINQ-ban az entitásokhoz

A lekérdezés olyan kifejezés, amely adatokat kér le egy adatforrásból. A lekérdezéseket általában speciális lekérdezési nyelven fejezik ki, például a relációs adatbázisok SQL-ét és az XML-hez készült XQueryt. Ezért a fejlesztőknek új lekérdezési nyelvet kellett elsajátítaniuk az általuk lekérdezett adatforrás- vagy adatformátumok mindegyikéhez. A Language-Integrated Query (LINQ) egyszerűbb, consis sátormód l megoldást kínál az adatok különböző adatforrások és formátumok közötti kezelésére. A LINQ-lekérdezésekben mindig programozási objektumokkal dolgozik.

A LINQ lekérdezési művelet három műveletből áll: az adatforrás vagy források beszerzése, a lekérdezés létrehozása és a lekérdezés végrehajtása.

Az általános felületet vagy az IEnumerable<T>IQueryable<T> általános felületet implementáló adatforrások a LINQ-n keresztül kérdezhetők le. Az általános IQueryable<T> felületet megvalósító általános ObjectQuery<T> osztály példányai adatforrásként szolgálnak a LINQ entitások lekérdezéseihez. Az ObjectQuery<T> általános osztály egy olyan lekérdezést jelöl, amely nulla vagy több beírt objektum gyűjteményét adja vissza. Azt is lehetővé teheti, hogy a fordító a C# kulcsszóval var (Dim in Visual Basic) következtetsen az entitás típusára.

A lekérdezésben pontosan meg kell adnia az adatforrásból lekérni kívánt információkat. A lekérdezések azt is megadhatja, hogy az adatok hogyan legyenek rendezve, csoportosítva és formázva a visszaadása előtt. A LINQ-ban a lekérdezések egy változóban lesznek tárolva. Ha a lekérdezés értéksorozatot ad vissza, akkor magának a lekérdezési változónak lekérdezhető típusnak kell lennie. Ez a lekérdezési változó nem hajt végre műveletet, és nem ad vissza adatokat; csak a lekérdezési adatokat tárolja. A lekérdezés létrehozása után végre kell hajtania a lekérdezést az adatok lekéréséhez.

Lekérdezési szintaxis

A LINQ–Entitások lekérdezések két különböző szintaxisban állíthatók össze: a lekérdezési kifejezés szintaxisa és a metódusalapú lekérdezési szintaxis. A lekérdezési kifejezés szintaxisa a C# 3.0 és a Visual Basic 9.0 újdonsága, és a Transact-SQL-hez vagy az XQueryhez hasonló deklaratív szintaxisban írt záradékokból áll. A .NET-keretrendszer közös nyelvi futtatókörnyezet (CLR) azonban nem tudja beolvasni magát a lekérdezési kifejezés szintaxisát. Ezért fordításkor a lekérdezési kifejezések olyanra lesznek lefordítva, amelyet a CLR megért: metódushívások. Ezeket a metódusokat szabványos lekérdezési operátoroknak nevezzük. Fejlesztőként lehetősége van közvetlenül a metódusszintaxis használatával meghívni őket a lekérdezés szintaxisa helyett. További információ: Lekérdezési szintaxis és metódusszintaxis a LINQ-ban.

Lekérdezési kifejezés szintaxisa

A lekérdezési kifejezések deklaratív lekérdezési szintaxisok. Ez a szintaxis lehetővé teszi, hogy a fejlesztők a Transact-SQL-hez hasonló, magas szintű nyelven írjanak lekérdezéseket. A lekérdezési kifejezés szintaxisával akár összetett szűrési, rendezési és csoportosítási műveleteket is végrehajthat az adatforrásokon minimális kóddal. További információ: Egyszerű lekérdezési műveletek (Visual Basic). A lekérdezési kifejezés szintaxisának használatát bemutató példákért tekintse meg az alábbi témaköröket:

Metódusalapú lekérdezési szintaxis

A LINQ entitásokhoz való írásának másik módja a metódusalapú lekérdezések használata. A metódusalapú lekérdezésszintaxis a LINQ operátori metódusokhoz intézett közvetlen metódushívások sorozata, amely paraméterekként lambdakifejezéseket ad át. További információ: Lambda Expressions. A metódusalapú szintaxis használatát bemutató példákért tekintse meg a következő témaköröket:

Lásd még