Convert Datatable to Object with Linq and Group by

c#, linq

Solution

var result = from row in dt.AsEnumerable()
             group row by new
             {
                 c1 = r.Field<string>("col1"),
                 c2 = r.Field<string>("col2"),
                 c3 = r.Field<string>("col3")
             } into section
             select new
             {
                 col1 = section.Key.c1,
                 col2 = section.Key.c2,
                 col3 = section.Key.c2,
                 col4 = section.Select(r => r.Field<string>("col4")).ToList()
             };

Problem

I try to convert datatable into JSON with special format Data in DataTable is as follow ``` col1 col2 col3 col4 --------------------- A B c D1 A B c D2 A B c D3 ``` Try to convert it to a object array like ``` class obj { var col1; var col2; var col3; list<string> col4; } ``` I try to use linq, but kinda get stuck. ``` var result = from row in dt.AsEnumerable() group row by new { c1 = row["col1"], c2 = row["col2"], c3 = row["col3"] } into section select new { item = section.Key }; ```

Original source