using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Data.DataSetExtensions;
public static void Main()
DataTable dt = new DataTable();
dt.Columns.Add("StudentId", typeof(int));
dt.Columns.Add("bookId", typeof(int));
dt.Columns.Add("Page", typeof(string));
dt.Rows.Add(new object[]{1,101,"500"});
dt.Rows.Add(new object[]{1,102,"600"});
dt.Rows.Add(new object[]{2,101,"400,500"});
dt.Rows.Add(new object[]{2,103,"500,600,700"});
var result = dt.AsEnumerable()
.GroupBy(r=>r.Field<int>("StudentId"))
Books = c.GroupBy(s=>s.Field<int>("bookId"))
pages = b.SelectMany(p=>p.Field<string>("Page").Split(',').Select(int.Parse)).ToList()