I <3 LINQ

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? Open-mouthed smile

 

P.S. la versione 1 era pure in VB.NET ma l’ho tradotta per un confronto più facile Winking smile

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 Embarrassed smile

Technorati Tags: ,
«October»
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789