Marco Russo

.NET, Business Intelligence e dintorni

News

Windows Developer Conference 2012

Torino Technologies Grou

Corsi

Libri

Miei blog in inglese

Archives

January 2008 - Posts

Prime applicazioni scritte usando LINQ

Oggi ho visto una piccola applicazione usando LINQ to SQL e LINQ to XML: si tratta di WikiSpider, che colpirà soprattutto per il fatto di avere un'interfaccia utente WPF particolarmente accattivante.

La cosa più interessante, però, è aprire il codice. Un'istruzione come quella che segue, dal mio punto di vista, da sola giustifica l'uso di LINQ.

var pages = from p in linksDoc.Descendants("page")
    select new {
        Title = p.Element("title").Value,
        Id = p.Element("id").Value,
        Touched = p.Element("touched").Value,
        RevisionId = p.Element("revid").Value,
        Links = (from l in p.Descendants("l")
                select l.Value).ToList()
}; 

Il risultato è in realtà una sola pagina (ma in un altro scenario potrebbe essere una lista) con all'interno un elemento che è a sua volta una lista di link. Gli elementi chiave della query sono due: la brevità (e con Visual Basic sarebbe stato ancora più corto, bisogna ammetterlo) e la chiarezza. Se conoscete altre applicazioni "pubbliche" che usano LINQ, sarei grato se me le segnalaste, mi interessa capire che direzione prende l'adozione di LINQ nel mondo reale.

 

Posted: Jan 31 2008, 08:06 AM by marco | with no comments
Filed under:
Come scrivere SELECT ... NOT IN in LINQ

Dopo uno scambio di mail con Sandro che mi ha sollecitato sul tema, ho scritto un post (in inglese) su come realizzare una query LINQ equivalente al costrutto sintattico NOT IN di SQL. In breve, il punto chiave è usare Contains che definisce una query con EXISTS (o NOT EXISTS, come nel nostro caso).

Visual C++ 2008 Feature Pack (beta)

Anche se ormai C# ha preso il posto di C++ come linguaggio di riferimento per chi sviluppa in Windows (almeno in termini volumetrici per applicazioni di una certa complessità), non si può dire che il C++ sia fuori da un percorso di innovazione, anzi! Anche perché, ricordiamolo, la maggior parte dei prodotti di Microsoft sono scritti in C++.

La direzione in cui sta andando il C++, cioè la sua prossima versione di standard, sarà C++0x. Tra le tante, il supporto a lambda expression e lambda functions è particolarmente interessante (quanta strada dal primo C++...).

La beta di Visual C++ 2008 Feature Pack che è disponibile da pochi giorni offre, oltre ad alcune novità per MFC, anche un'implementazione di TR1, una serie di librerie che di fatto estendono le C++ Standard Library.

Algoritmi e strutture dati

Inauguro il 2008 segnalando la libreria DSA (Data Structures and Algorithms) scritta da Granville Barnett: si tratta di una serie di classi per .NET che implementano strutture dati (alberi, double linked list, set, ecc.) e algoritmi come vari tipi di sort, fattoriale, metodi su stringhe, ecc.

La libreria è su CodePlex, quindi gratuita e con tanto di sorgenti. Vengono usati gli extension method di C# 3.0, estendendo così anche la classe String aggiungendo metodi come Reverse, Strip, WordCount e altri. Devo dire che gli extension method sono una delle novità di C# 3.0 più interessanti, soprattutto grazie all'integrazione con IntelliSense che offre la possibilità di vedere tutti i metodi accessibili su un oggetto (con e senza Extension Methods) senza conoscere il nome della classe che li contiene realmente. Certo, bisogna almeno mettere una using...