LINQ
- úvod
- LINQ to SQL
- Další implementace LINQ
- PLinq
- LINQ to XSD
- LINQ to Amazon
- Blinq
- další…
Neznáte LINQ?
LINQ je dotazovací jazyk integrovaný přímo v C# nebo VB.NET. LINQ je součástí .NET Framework 3.5 na jehož finální verzi si ještě nějakou dobu počkáme, tzn. k dispozici zatím máme pouze CTP (něco jako beta).
Co umí LINQ?
LINQ - dotazování v kolekcích, polích a pod.
LINQ to XML - dotazování do XML (dříve XLinq)
LINQ to SQL - dotazování do databáze (dříve DLinq)
LINQ to SQL je nejzajímavější a nejspíš i nejpoužívanější, dovoluje nám provádět jednoduše a hlavně objektově dotazy nad databází.
Select
DbShop db = new DbShop(“Data Source=(local);Initial Catalog=eShop“); var results = from p in db.Products where p.Description.Contains(“kvalitní“) && p.Price < 600 orderby p.Price select p; foreach (var item in results) { Console.WriteLine(string.Format(“item: {0}, price: {1}“, item.Name, item.Price)); }
Insert
Products product = new Products(); product.Name = “LINQ in Action“; product.Description = “Kniha o nové technologii LINQ“; product.Price = 499; db.Products.Add(product); db.SubmitChanges();
Update
var item = (from p in db.Products where p.ID = 10 orderby p.Price select p).First(); item.Price = 6500; item.Discount = true; db.SubmitChanges();
Třídy DbShop (práce s databází) a Products (tabulka Products), které se zde používají jsou velice důležité a objektově popisují schéma databáze, nad kterou se pracuje. Jsou zde implementovány metody, vlastnosti nebo třeba relace mezi tabulkami což umožňuje přeložení LINQ dotazů do podoby SQL dotazů nebo práci se samotnou databází.
Tyto třídy popisující schéma je možné buď psát ručně (celkem pracné) a nebo použít SqlMetal.exe, který je součástí instalace LINQu a který vygeneruje potřebné třídy automaticky podle databáze.
Překlad LINQ na SQL
Odkazy
Server o LINQu
http://linqinaction.net/
101 jednoduchých ukázek použití základních operací LINQu
http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx ^
Podrobný dokument o LINQ to SQL
http://msdn2.microsoft.com/en-us/library/bb425822.aspx ^
Podrobný dokument o LINQ to XML
http://msdn2.microsoft.com/en-us/library/bb308960.aspx ^
LINQ to cokoliv?
LINQ umožňuje víc - můžeme vytvářet vlastní implementace založené na tomto dotazovacím jazyce. Již dnes exitují některé rozšíření LINQu…
PLinq - Parallel Linq
Interní projekt Microsoftu PLinq je technologie zaměřená na vývoj aplikací bežících na několika procesorech - pouze definujeme co se má počítat, o paralelní výpočet se už postará PLinq.
Více na http://www.bluebytesoftware.com/blog/PermaLink,guid,81ca9c00-b43e-4860-b96b-4fd2bd735c9f.aspx ^
LINQ to XSD
Další interní projekt Microsoftu je Linq to XSD.
Problém samotného XML je že se jedná o generický zápis dat, nevíme jakého typu jsou data v daném XML uloženy nebo jaká je struktura, proto LINQ to XML (nezaměňujte s LINQ to XSD) vypadá takto:
var results = from item in purchaseOrder.Elements(“Item“) where (double)item.Element(“Price“) < 600 select new { (double)item.Element(“Price“), (int)item.Element(“Quantity“) };
Nedochází zde ke kontrole datového typu hodnot a ani intellisense nefunguje, protože nezná strukturu dat.
Řešením je Linq to XSD
XSD je shcéma XML souboru popisující strukturu a typ uložených dat.
var results = from item in purchaseOrder.Elements(“Item“) where item.Element(“Price“) < 600 select new { item.Element(“Price“), item.Element(“Quantity“) };
Rozdíl je tedy nejen v syntax, ale také intellisense zde funguje, protože podle XSD zná strukturu dokumentu a datové typy.
Další informace o LINQ to XSD
http://blogs.msdn.com/xmlteam/archive/2006/11/27/typed-xml-programmer-welcome-to-linq.aspx ^
Stáhnout LINQ to XSD:
http://www.microsoft.com/downloads/details.aspx?FamilyID=6979e1eb-4a05-4ac6-ac9d-b3e138d33633&displaylang=en ^
LINQ to Amazon
Zajímavou ukázkou může být propojení LINQu na internetový obchod Amazon.
var query = from book in new Amazon.BookSearch() where book.Title.Contains(“ajax“) && (book.Publisher == “Manning“) && (book.Price <= 25) && (book.Condition == BookCondition.New) select book;
http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to-Amazon.aspx
BLinq
BLinq je projekt maličko vybočující z řady výše uvedených. Generuje ASP.NET stránky pro manipulaci s daty a tabulkami databáze. Umožní přes webové stránky nejen prohlížet data v tabulkách, ale také přidávat, mazat nebo měnit záznamy. Pokud znáte například MyPhpAdmin, Blinq je obdobný projekt založený na LINQu.
http://www.asp.net/sandbox/app_blinq.aspx?tabid=62 ^
Další projekty
- LINQ to MySQL ^
- LINQ to LDAP ^
- LINQ to NHibernate ^ - ukázka implementace vlastního providera
- LINQ to Flickr * doplněno
- LINQ to Sharepoint * doplněno
- LINQ to Google Desktop * doplněno


