Language Integrated Query (LINQ)

A Language-Integrated Query (LINQ) olyan technológiák neve, amelyek a lekérdezési képességeknek közvetlenül a C# nyelvbe való integrálásán alapulnak. Az adatokra irányuló lekérdezések hagyományosan egyszerű sztringekként vannak kifejezve anélkül, hogy a fordításkor típusellenőrzést vagy IntelliSense-támogatást kapnak. Emellett minden adatforrástípushoz más lekérdezési nyelvet kell megtanulnia: SQL adatbázisokat, XML-dokumentumokat, különböző webszolgáltatásokat stb. A LINQ használatával a lekérdezések első osztályú nyelvi szerkezetek, csakúgy, mint az osztályok, metódusok, események.

A lekérdezéseket író fejlesztők számára a LINQ legláthatóbb "nyelvvel integrált" része a lekérdezési kifejezés. A lekérdezési kifejezések deklaratív lekérdezési szintaxissal vannak megírva. A lekérdezési szintaxis használatával szűrési, rendezési és csoportosítási műveleteket hajthat végre az adatforrásokon minimális kóddal. Ugyanezeket az alapszintű lekérdezési kifejezési mintákat használja SQL adatbázisokban, ADO .NET-adatkészletekben, XML-dokumentumokban és streamekben, valamint .NET-gyűjteményekben lévő adatok lekérdezéséhez és átalakításához.

Az alábbi példa a teljes lekérdezési műveletet mutatja be. A teljes művelet magában foglalja egy adatforrás létrehozását, a lekérdezési kifejezés meghatározását és a lekérdezés utasításban történő foreach végrehajtását.

// Specify the data source.
int[] scores = { 97, 92, 81, 60 };

// Define the query expression.
IEnumerable<int> scoreQuery =
    from score in scores
    where score > 80
    select score;

// Execute the query.
foreach (int i in scoreQuery)
{
    Console.Write(i + " ");
}

// Output: 97 92 81

Lekérdezési kifejezés áttekintése

  • A lekérdezési kifejezések bármely LINQ-kompatibilis adatforrásból származó adatok lekérdezésére és átalakítására használhatók. Egyetlen lekérdezés például lekérhet adatokat egy SQL-adatbázisból, és kimenetként XML-adatfolyamot hozhat létre.

  • A lekérdezési kifejezések könnyen megérthetőek, mert számos jól ismert C#-nyelvi szerkezetet használnak.

  • A lekérdezési kifejezés változói mind erősen be vannak adva, bár sok esetben nem kell explicit módon megadnia a típust, mert a fordító ki tudja következtetni. További információ: Típuskapcsolatok a LINQ lekérdezési műveletekben.

  • A lekérdezés nem lesz végrehajtva, amíg nem iterál a lekérdezési változón, például egy foreach utasításban. További információ: Bevezetés a LINQ-lekérdezések használatába.

  • Fordításkor a lekérdezési kifejezések standard lekérdezési operátor metódushívásokra lesznek konvertálva a C#-specifikációban meghatározott szabályok szerint. A lekérdezési szintaxissal kifejezhető lekérdezések metódusszintaxissal is kifejezhetők. A legtöbb esetben azonban a lekérdezési szintaxis olvashatóbb és tömörebb. További információ: C# nyelvspecifikáció és Standard lekérdezési operátorok áttekintése.

  • A LINQ-lekérdezések írásakor általában azt javasoljuk, hogy amikor csak lehetséges, használja a lekérdezési szintaxist és a metódus szintaxisát, amikor szükséges. A két különböző űrlap között nincs szemantikai vagy teljesítménybeli különbség. A lekérdezési kifejezések gyakran olvashatóbbak, mint a metódusszintaxisban írt egyenértékű kifejezések.

  • Egyes lekérdezési műveletek( például Count vagy Max) nem rendelkeznek egyenértékű lekérdezési kifejezési záradékkal, ezért metódushívásként kell kifejezni. A metódusszintaxis többféleképpen kombinálható a lekérdezési szintaxissal. További információ: A LINQ lekérdezési szintaxisa és metódusszintaxisa.

  • A lekérdezési kifejezések a lekérdezés típusától függően lefordíthatók kifejezésfákra vagy delegáltakra. IEnumerable<T> lekérdezéseket a rendszer delegáltaknak fordítja le. IQueryable és IQueryable<T> a lekérdezések kifejezésfákra vannak lefordítva. További információ: Kifejezésfák.

Következő lépések

Ha további részleteket szeretne megtudni a LINQ-ről, kezdje azzal, hogy megismerkedik a lekérdezési kifejezések alapjaival, majd olvassa el a LINQ technológia dokumentációját, amely érdekli:

A LINQ általános megismeréséhez tekintse meg a LINQ-t a C#-ban.

A LINQ C#-ban való használatához tekintse meg a LINQ használata című oktatóanyagot.