A LINQ segít lekérdezés-szerű adatműveletek elvégzésében
A legutóbbi Microsoft PDC konferencia a .NET programozóknak is hozott újdonságokat, és ezek egyike a LINQ (Language Integrated Query) projekt, mely lehetővé teszi, hogy nyelvi szinten használjuk a lekérdezéseket, akár SQL adatbázisokat, XML fájlokat vagy tömböket címzünk meg. A már most kipróbálható újítás lényege, hogy az ismert tagfüggvény hívási lánc helyett egy olvashatóbb szintaxist vezet be, kiterjesztve több adatforrásra a lehetőségeket.
A jelenleg C# és VB.NET nyelvekhez készült LINQ kiegészítő lehetővé teszi, hogy a következő egyszerű módon írhassunk lekérdezéseket:Látható, hogy egy nyelvi szintű lekérdezést tudunk megvalósítani akár egy karaktersorozat tömbre is, de ugyanezt a támogatást használhatjuk XML fájlokra is az XLINQ segítségével, illetve adatbázisokra a DLINQ-nak köszönhetően. Úgy lehetséges a technológia ilyen széles körű alkalmazása, hogy a Nemcsak külön-külön nyúlhatunk ezekhez az adatforrásokhoz, hanem akár egy adatbázis táblát is összekapcsolhatunk egy XML állománnyal, és a metszetük alapján készíthetünk egy XML eredménysorozatot. Egy ehhez hasonló bonyolultabb példát mutat be John Udell. A lehetőségek száma tehát eléggé nyitott, és már sokan megpróbálták értelmezni a LINQ hatását más nyelvekre, vagy hasonló szerkezetek megvalósíthatóságát például Ruby esetén. Kezdetben azonban mindenképpen a hivatalos LINQ holnapot tudom ajánlani az érdeklődőknek, ahol egy bemutató videó, és számos alkalmazási példa is elérhető.
■ A jelenleg C# és VB.NET nyelvekhez készült LINQ kiegészítő lehetővé teszi, hogy a következő egyszerű módon írhassunk lekérdezéseket:
using System;
using System.Query;
using System.Collections.Generic;
class app {
static void Main() {
string[] names = { "Burke", "Connor", "Frank",
"Everett", "Albert", "George",
"Harris", "David" };
IEnumerable<string> expr = from s in names
where s.Length == 5
orderby s
select s.ToUpper();
foreach (string item in expr)
Console.WriteLine(item);
}
}
/* Kimenete:
BURKE
DAVID
FRANK
*/
where
, orderby
, select
és hasonló kulcsszavaknak tűnő kifejezések valójában a tömb műveleteiként vannak megvalósítva, így a fentivel ekvivalens kód lenne:IEnumerable<string> expr = names
.Where(s => s.Length == 5)
.OrderBy(s => s)
.Select(s => s.ToUpper());