Filtrera DataSet
Ja även fast det är spännande att jobba med nya databas-tekniker som LinqToSQL och Subsonic, så kan det vara bra att kunna lite hederliga DataSet-operationer.
Just nu så hade jag ett problem med Subsonics Paging-funktioner, där en Where-sats inte kom med. Jag fick dubbla poster hur jag än gjorde. Då kom jag på att jag kunde filtrera DataSet:et i efterhand och skrev följande lilla funktion.
private static DataSet FilterDataSet(DataSet ds,string filter)
{
DataSet clone = ds.Clone();
DataRow[] foundRows = ds.Tables[0].Select(filter);
for (int i = 0; i < foundRows.Length; i++)
{
DataRow row = foundRows[i];
clone.Tables[0].ImportRow(row);
}
return clone;
}
Anropar den sedan på följande vis. I detta fallet ville jag ha ut texter på en visst språk, och inte alla språk i databas-tabellen som Subsonic envisade sig med att returnera.
return FilterDataSet(q.ExecuteDataSet(),"Culture='sv-SE'");
Är du sugen på liknade exempel, så kan jag rekommendera tidigare inlägg där vi skrivit om hur man sorterar ett DataTable eller hur man skapar nya kolumner i DataSet och sparar det i Cacheminne.
Tags