Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

tag: LINQ

Conversioni tra System.Xml e System.Xml.Linq

Riporto qui una utile classe per la conversione di elementi System.Xml a System.Xml.Linq e viceversa:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Xml;
using System.Xml.Linq;

/// <summary>
/// Provides extension methods for simple conversion between System.Xml and System.Xml.Linq classes.
/// </summary>
public static class XmlLinqConversionExtensions {

    /// <summary>  
    /// Converts an XDocument to ...

Indice di un elemento in una query LINQ

Mettiamo che abbia bisogno di usare l'indice dell'elemento corrente di una query LINQ.

Ad esempio, partendo dalla lista:

String[] pezzi = {"pedone", "torre", "cavallo", "alfiere"};

voglio ottenere una unica stringa che contiene:

Pezzo numero 1:pedone, Pezzo numero 2: torre, etc.

Il metodo Select ha un overload con il parametro "index" che può essere utilizzato per conoscere l'indice dell'elemento corrente. In altre parole è possibile fare:

pezzi.Select((item, index) => "Pezzo numero " + index.ToString() + ": " + item)

Per ottenere esattamente l'output desiderato possiamo usare il metodo Join() della classe String:

Console.WriteLine(
    String.Join(", ", 
        pezzi.Select((item, index ...