Category Archives: LINQ

Linq to Events (Rx)

Una novità interessante di .NET 4.0 è "LINQ to Events", una nuova estensione di LINQ chiamata anche Rx.

Il risultato pratico è di poter scrivere delle logiche di concatenazione di eventi asincroni all'interno di una singola espressione, che (almeno con la sintassi attuale) non è ancora leggibilissimo ma è certamente più sintetico del codice che sarebbe necessario usando i comuni pattern di programmazione asincrona (BeginInvoke/EndInvoke). Al solito, la cosa che più apprezzo di questo approccio è il fatto di chiarire in maniera "dichiarativa" cosa si vuole fare, piuttosto che perdersi nei dettagli implementativi.

Credo che ci voglia un attimo ad abituarsi e il debug non sia una cosa esattamente semplice – ma la strada è molto molto promettente in prospettiva e comunque già usabile con la prossima versione di .NET 4.0.

Per approfondire il discorso consiglio anche la lettura di questo post e di seguire quelli futuri dello stesso blog.

Errata corrige per il libro Programming Microsoft LINQ

Abbiamo appena pubblicato una versione aggiornata dell'errata corrige del libro Programming Microsoft LINQ. L'errata corrige è riferita alla versione inglese, mentre nella versione italiana moltissime correzioni sono già state integrate (un sentito ringraziamento va per questo a Natale Fino, che ha curato la traduzione).

Sul sito del libro sono disponibili alcuni capitoli gratuiti (nella versione in lingua inglese).

Alcune segnalazioni per LINQ

Recentemente ho scritto alcuni post in inglese nel mio blog su LINQ:

Purtroppo non ho tempo di scrivere tutto in due lingue, per questo segnalo a chi usa LINQ di dare un'occhiata a questi post, in particolare all'ultimo (Distinct e OrderBy) che rischia di far perdere molto tempo perché può far pensare a un bug della libreria, quando in realtà (come direbbe Microsoft con una frase un po' irritante) si tratta di un comportamento "by design".

Buona lettura.

Programming Microsoft LINQ è disponibile!

Il libro Programming Microsoft LINQ è finalmente disponibile. Abbiamo anche aggiornato il sito web di supporto (http://programminglinq.com), dove è possibile scaricare il codice di esempio del libro.

Cosa c’è nel libro? Abbiamo provato a coprire tutto quello che  è incluso nella RTM, ma abbiamo anche introdotto tecnologie ancora in beta o in CTP ancora embrionali, come LINQ to Entities e Parallel LINQ. Al fondo di questo post trovate un elenco dei capitoli per avere un’idea del contenuto del libro.

Martedì comincia DevCon 2008, dove LINQ sarà uno degli argomenti caldi. La settimana successiva saremo a Orlando per partecipare anche a qualche attività legata al lancio del libro durante TechEd Developers 2008. Non sono previsti annunci di rilievo, ma questa sarà probabilmente l’ultima keynote di Bill Gates (martedì 3 giugno, nel pomeriggio per l’Italia) e quindi è lecito attendersi qualche novità. Vedremo…

Programming Microsoft LINQ

  • Part I LINQ FOUNDATIONS
    • 1 – LINQ Introduction
    • 2 – LINQ Syntax Fundamentals
    • 3 – LINQ to Objects
  • Part II LINQ to Relational Data
    • 4 – LINQ to SQL: Querying Data
    • 5 – LINQ to SQL: Managing Data
    • 6 – Tools for LINQ to SQL
    • 7 – LINQ to DataSet
    • 8 – LINQ to Entities
  • Part III LINQ and XML
    • 9 – LINQ to XML: Managing the XML Infoset
    • 10 – LINQ to XML: Querying Nodes
  • Part IV Advanced LINQ
    • 11 – Inside Expression Trees
    • 12 – Extending LINQ
    • 13 – Parallel LINQ
    • 14 – Other LINQ Implementations
  • Part V Applied LINQ
    • 15 – LINQ in a Multitier Solution
    • 16 – LINQ and ASP.NET
    • 17 – LINQ and WPF/Silverlight
    • 18 – LINQ and the Windows Communication Foundation
  • Appendixes
    • A – ADO.NET Entity Framework
    • B – C# 3.0: New Language Features
    • C – Visual Basic 2008: New Language Features

 

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.