LINQ: serializzare classi C#

A partire dalla versione 3.5 del Framework .NET di Microsoft è stata introdotto il componente LINQ (Language Integrated Query).

LINQ è un linguaggio che permette di effettuare interrogazioni con una sintassi simile a SQL su diverse fonti di dati quali oggetti, xml e database.

Quello che vi voglio mostrare oggi è come sia possibile, sfruttando la potenza di LINQ, generare un file xml che rappresenta l’istanza di una classe C#.

Supponiamo quindi di avere una classe C# e di voler ottenere il codice xml che rappresenta una sua istanza.

Consideriamo la classe Book cosi definita:

1
2
3
4
5
6

public class Book
{
public String title { get; set; }
public String author { get; set; }
public String editor { get; set; }
}

Definiamo ora una lista di libri nel seguente modo:

1

List<book> lstBooks = new List<book>();

e popoliamola come segue

1
2
3
4
5
6
7
8
9
10
11

Book l1 = new Book();
l1.author = "Alessandro Manzoni" ;
l1.title = "I Promessi Sposi";
l1.editor= "Mondadori";
lstBooks.add(l1);

Book l2 = new Book();
l1.author = "Dante Alighieri" ;
l1.title = "La Divina Commedia";
l1.editor= "ERGA Edizioni";
lstBooks.add(l2);

A questo punto possiamo utilizzare il seguente codice LINQ per trasformare la nostra lista di libri nel codice xml che la rappresenta:

1
2
3
4
5
6
7
8
9
10
11
12

<books>
<book>
<title>I Promessi Sposi</title>
<author>Alessandro Manzoni</author>
<editor>Mondadori</editor>
</book>
<book>
<title>La Divina Commedia</title>
<author>Dante Alighieri</author>
<editor>ERGA Edizioni</editor>
</book>
</books>