DataSet je zajímavým objektem technologie ADO.NET. Jedná se o in-memory databázi, která může obsahovat tabulky, relace, omezení, pohledy apod. Řádky v tabulce je možno třídit a filtrovat, lze vyhledávat řádky podle hodnoty primárního klíče nebo provádět další kousky pomocí metody Compute(), plnohodnotý SQL jazyk však k dispozici není. Není tak snadné provádět subdotazy, různé joiny apod.
Alespoň částečným řešením je knihovna QueryADataSet, která přináší implementaci podmnožiny jazyka SQL ke snadnému použití v DataSetech. Zde je příklad z domovské stránky produktu:
DataSet ds = new DataSet;
//populate from commercial database or read offline XML file
string sql = "SELECT TRIM(name), COUNT(name) As 'Total' FROM table1 GROUP BY name ORDER BY 1";
DataView dv = QueryADataSet.DsCommand.Execute(sql, ds);
GridView1.DataSource = dv;
GridView1.DataBind();
Bohužel je QueryADataSet knihovnou poměrně drahou, na jeden vývojářský počítač stojí licence téměř 200 dolarů. Jaké jsou alternativy? O jedné napíšu zanedlouho…
[…] Nedávno jsem psal, že určitou nevýhodou Datasetu je nemožnost pokládat mu SQL dotazy a že za 200 dolarů lze pořídit knihovnu QueryADataSet, která tuto funkčnost doplňuje. Dnes je čas podívat se na možnost, která nabízí ještě lepší možnosti SQL dotazování (téměř plnou podporu standardu SQL 92) a přitom nestojí ani dolar. […]