Pivot Data with LINQ Simplicity
Transforming data into a more user-friendly format is often necessary. A common approach is pivoting, where data is restructured to display it in a grid-like manner. Imagine having a collection of items with an Enum and a User object. To visualize it in a grid, you need to flatten it.
LINQ provides an elegant solution for such scenarios. Let's start by grouping the data based on the Enum value, effectively creating columns.
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() };
Next, determine the total number of rows based on the maximum number of items in any column.
int rows = grps.Max(grp => grp.Bars.Length);
Finally, iterate through the columns and rows to construct the desired output.
foreach (var grp in grps) { Console.Write(grp.Foo + "\t"); } Console.WriteLine(); 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(); }
This LINQ-based approach provides a concise and efficient way to pivot data, making it easy to display it in a more organized and informative manner.
The above is the detailed content of How Can LINQ Simplify Data Pivoting for Enhanced Readability?. For more information, please follow other related articles on the PHP Chinese website!