Ho ripreso in mano un progetto scritto sei anni fa. Devo dire che LINQ e gli Extension Methods sono dei gran strumenti.
internal Dictionary<string, int> GetDictionaryCountries()
{
var retDict = new Dictionary<string, int>();
using (ISession session = SessionHelper.GetSession())
{
IList<object> objList = session.CreateQuery("select i.Code, i.Id from Country i").List<object>();
foreach (object obj in objList)
{
Array arr = (Array)obj;
retDict.Add(Convert.ToString(arr.GetValue(0)), Convert.ToInt32(arr.GetValue(1)));
}
}
return retDict;
}
Diventa:
internal Dictionary<string, int> GetDictionaryCountries()
{
using (ISession session = SessionHelper.GetSession())
{
return session.Query<Country>().Select(x => new { x.Code, x.Id }).ToDictionary(x => x.Code, x => x.Id);
}
}
Devo aggiungere altro?
P.S. la versione 1 era pure in VB.NET ma l’ho tradotta per un confronto più facile
P.P.S. Non sparate sul pianista sul perchè faccio una cosa del genere o quanto fa schifo tornare un dictionary, è stato il primo programma scritto in .NET