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 @ Wednesday, October 9, 2013 3:18 PM

Print

Comments on this entry:

# re: I <3 LINQ

Left by Federico at 10/10/2013 9:24 AM
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 10/11/2013 9:32 AM
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.
«October»
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789