Maison >développement back-end >C++ >Comment puis-je faire pivoter les données à l'aide de LINQ ?
Pivot de données à l'aide de LINQ
Dans le traitement des données, le pivotement fait référence à la transformation de données d'un format avec plusieurs colonnes et lignes vers un format avec plusieurs lignes et colonnes. Voici comment effectuer le pivotement des données à l'aide de LINQ :
Considérez une collection d'éléments contenant une énumération TypeCode et un objet User. Comme décrit par l'enquête, vous souhaitez aplatir la collection et la présenter dans une structure en forme de grille, comme le montrent les exemples de données fournis :
TypeCode | User |
---|---|
1 | Don Smith |
1 | Mike Jones |
1 | James Ray |
2 | Tom Rizzo |
2 | Alex Homes |
3 | Andy Bates |
Le résultat souhaité serait :
1 | 2 | 3 |
---|---|---|
Don Smith | Tom Rizzo | Andy Bates |
Mike Jones | Alex Homes | |
James Ray |
Solution LINQ :
LINQ peut gérer efficacement ce type d'opération de pivotement. Voici un extrait de code qui montre comment :
// Sample data var data = new[] { new { Foo = 1, Bar = "Don Smith"}, new { Foo = 1, Bar = "Mike Jones"}, new { Foo = 1, Bar = "James Ray"}, new { Foo = 2, Bar = "Tom Rizzo"}, new { Foo = 2, Bar = "Alex Homes"}, new { Foo = 3, Bar = "Andy Bates"}, }; // Group into columns and select rows per column var grps = from d in data group d by d.Foo into grp select new { Foo = grp.Key, Bars = grp.Select(d2 => d2.Bar).ToArray() }; // Find the total number of (data) rows int rows = grps.Max(grp => grp.Bars.Length); // Output columns foreach (var grp in grps) { Console.Write(grp.Foo + "\t"); } Console.WriteLine(); // Output data for (int i = 0; i < rows; i++) { foreach (var grp in grps) { Console.Write((i < grp.Bars.Length ? grp.Bars[i] : null) + "\t"); } Console.WriteLine(); }
Sortie :
1 2 3
Don Smith Tom Rizzo Andy Bates
Mike Jones Alex Homes
James Ray
Cette solution LINQ fait pivoter efficacement les données vers le format souhaité en regroupant les éléments avec la même valeur Foo puis en sélectionnant les barres (noms d'utilisateur) par colonne. Il calcule le nombre maximum de lignes en fonction des entrées dans chaque colonne et génère le résultat sous forme de tableau bien structuré.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!