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 51 52 53 54 55 56 57 58 59
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LinqGroupBy
{
class RawData
{
public string poste;
public string famille;
public string composant;
}
class Poste
{
public string nom;
public List<Famille> familles;
}
class Famille
{
public string desc;
public List<Composant> composants;
}
class Composant
{
public string nom;
}
class Program
{
static void Main(string[] args)
{
RawData[] data = new RawData[]
{
new RawData() { poste = "Pxpx1.", famille = "Quint.", composant ="Cpt 1" },
new RawData() { poste = "Pxpx1.", famille = "Hyuhy", composant ="Cpt 2" },
new RawData() { poste = "Pxpx1.", famille = "Hyuhy", composant ="Cpt 3" },
new RawData() { poste = "Tpst2.", famille = "Porta.", composant ="Cpt44" },
new RawData() { poste = "Tpst3.", famille = "Porta.", composant ="Cpt45" },
new RawData() { poste = "Pkret.", famille = "Médis.", composant = "Cpt59" }
};
List<Poste> liste = (from p in
(
from f in data
group new Composant() { nom = f.composant } by new { f.poste, f.famille } into g
select new { poste = g.Key.poste, famille = g.Key.famille, composants = g.ToList() }
)
group new Famille() { desc = p.famille, composants = p.composants } by p.poste into g2
select new Poste() { nom = g2.Key, familles = g2.ToList()}
).ToList();
}
}
} |
Partager