Continuiamo con l'analisi del metodo LinqToSQL Where. La prima parte può essere trovata qui Cominciamo col riportare il codice del metodo: public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { if (source == null) throw Error.ArgumentNull("source"); if (predicate == null) throw Error.A ...

Da questo post inizieremo ad analizzare tutti i metodi che compongono LinqToSQL e le loro rispettive implementazioni, liberamente consultabili sul sito http://referencesource.microsoft.com. La maggior parte dei metodi LinqToSQL sono extension method definiti nella classe statica Enumerable e applicabili ad oggetti che implementano l’interfaccia IEnumerable<T> (quindi la v ...

Per implementare l'interfaccia Ienumerable è necessario poter costruire una istanza di un IEnumerator. È necessario quindi implementare i metodi: - MoveNext - Reset - Dispose E la proprietà Current sia nella versione generica che in quella non generica in quanto l'interfaccia generica estende quella non generica. Per semplificare questo processo è possibile utilizzare l’istruzi ...

Inauguriamo con questo post una serie su LinqToObject (da adesso in poi Linq) in cui andremo a studiare i sorgenti per capire in che modo questa funzionalità è stata implementata. Per chi non lo conoscesse Linq permette di eseguire numerose operazioni su delle collezioni di elementi tra cui: -          Filtrare -          Proiettare -          Medie e somme -          Intersezi ...

In questo articolo spieghiamo come implementare in modo semplice e rapido la funzione “ricordami” con le login social. Creando un nuovo progetto web application di tipo “web forms” è possibile scegliere la modalità di autenticazione “Individual User Accounts”. A questo punto abilitare le login social google, facebook o altre si riduce solamente alla configurazione delle varie a ...

La libreria OpenXML permette di creare e modificare documenti office utilizzando C#. Tra le diverse operazioni che si possono effettuare c’è la possibilità di valorizzare una o più celle di un excel. L’interfaccia del client Excel permette in maniera molto semplice di formattare e decidere il tipo di dati di una cella e le stesse operazioni possono essere effettuate tramite l’u ...

Cosa si intende per dispatch? Per rispondere a questa domanda, osserviamo innanzitutto gli snippet di codice qua sotto  public class Base { public virtual int Metodo() { return 0; } } public class A : Base { public override int Metodo() { return 1; } } public class B : Base { public override int Metodo() { return 2; } } Definite ...

Qualche tempo fa abbiamo visto qui come costruire la successione di Fibonacci sfruttando gli iteratori e l'interfaccia IEnumerable<T>. Come possiamo generalizzare questo approccio? Quello che abbiamo fatto è stato generare a partire da un seme una successione di valori finché una certa condizione non diventasse falsa. Questo procedimento non è nuovo ed è stato applicato ...

Creare degli snippet di codice personalizzati all'interno di Visual Studio può essere molto utile soprattutto se si hanno parti di codice che si ripetono spesso ma che non si possono "astrarre" in alcun modo. Durante lo sviluppo di web form quando definiamo delle proprietà su una pagina, di default il loro valore non viene mantenuto tra i vari postback. Un modo per ovviare a q ...

Oggi costruiamo una classe che permette di produrre tutti i numeri di fibonacci (più piccoli di Int32.MaxValue). Per farlo implementiamo l'interfaccia IEnumerable<int> e quindi per ottenere i numeri in successione dovremo eseguire una foreach su una istanza della classe. L'implementazione non comporta particolari difficoltà, l'unica attenzione va fatta alla necessità di r ...