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: ,

posted @ mercoledì 9 ottobre 2013 18:18

Print

Comments on this entry:

# re: I <3 LINQ

Left by Federico at 10/10/2013 12:24
Gravatar
Vero quello che dici.
Tutti li strumenti, però, bisogna saperli usare, e per saperli usare bisogna capirli. Ho conosciuto programmatori, anche bravi o che si ritenevano tali, che paradossalmente quando hanno "imparato" (notare le virgolette) ad usare LINQ, lambda expression, keyword var,ecc, hanno disimparato il C#; ma forse non l'avevano mai imparato davvero...

# re: I <3 LINQ

Left by Nazareno at 11/10/2013 12:32
Gravatar
Io sono per i piccoli passi. Si inzia con quello che si conosce e ci aiuta a risolvere i problemi di oggi e nel mentre si cerca di imparare qualcosa di nuovo (e utile!!!) da inserire nel prossimo progetto.

Non mi piace l'utilizzo della tecnologia sono per il gusto di usare l'ultimo strumento su cui al momento c'è l'hype, ma devo anche ammettere che LINQ, Lambda e extension methods rendono il codice estremamente più leggibile.
Comments have been closed on this topic.
«luglio»
domlunmarmergiovensab
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910