using System.Data.DataSetExtensions;
DataTable Students=new DataTable();
DataTable Courses =new DataTable();
DataTable Professors =new DataTable();
DataTable Enrollment=new DataTable();
printTable(Initialize());
DataTable resultTbl=new DataTable();
string sList=string.Empty;
string cList=string.Empty;
string profName=string.Empty;
resultTbl.Columns.Add("ProfessorName",typeof(string));
resultTbl.Columns.Add("Students List",typeof(string));
resultTbl.Columns.Add("Course List",typeof(string));
foreach(var row in Professors.AsEnumerable().GroupBy(x => x.Field<string>("ProfessorName")))
profName=row.First().Field<string>("ProfessorName");
foreach(var prof in Professors.AsEnumerable().Where(x => x.Field<string>("ProfessorName")==profName))
cList += Courses.AsEnumerable().Where(r => r.Field<int>("CourseId") == prof.Field<int>("CourseId")).FirstOrDefault()["CourseName"] + ",";
foreach(var enrollData in Enrollment.AsEnumerable().Where(e => e.Field<int>("CourseId")==prof.Field<int>("CourseId")))
sList += Students.AsEnumerable().Where(s => s.Field<int>("StudentId") == enrollData.Field<int>("StudentId")).Single()["StudentName"] + ",";
resultTbl.Rows.Add(new object[]{profName,sList,cList});
string[] Sname= {"A","B","C","D","E","F","G","H","I","J"};
string[] Cname= {"English","Mathematics","Physics","Chemistry","Political Science","History","Computer Administration","Geography"};
DataTable dt = new DataTable();
dt.Columns.Add("StudentId",typeof(int)).AllowDBNull = false;
dt.Columns.Add("StudentName", typeof(string));
dt.Rows.Add(new object[] { i,Sname[i-1] });
dt.Columns.Add("CourseId",typeof(int)).AllowDBNull = false;
dt.Columns.Add("CourseName", typeof(string));
for(int i=101;i<=108;i++){
dt.Rows.Add(new object[] { i,Cname[j-1] });
dt.Columns.Add("ProfessorName", typeof(string));
dt.Columns.Add("CourseId",typeof(int));
dt.Rows.Add(new object[] { "Anil",101});
dt.Rows.Add(new object[] { "Anil",105});
dt.Rows.Add(new object[] { "Anil",106});
dt.Rows.Add(new object[] { "Suresh",102});
dt.Rows.Add(new object[] { "Suresh",103});
dt.Rows.Add(new object[] { "Mohan",104});
dt.Rows.Add(new object[] { "Mohan",107});
dt.Rows.Add(new object[] { "Abhay",108});
dt.Columns.Add("StudentId",typeof(int));
dt.Columns.Add("CourseId",typeof(int));
dt.Rows.Add(new object[] { 1,101 });
dt.Rows.Add(new object[] { 2,101 });
dt.Rows.Add(new object[] { 2,104 });
dt.Rows.Add(new object[] { 3,103 });
dt.Rows.Add(new object[] { 3,101 });
dt.Rows.Add(new object[] { 3,107 });
dt.Rows.Add(new object[] { 4,105 });
dt.Rows.Add(new object[] { 4,106 });
dt.Rows.Add(new object[] { 4,102 });
dt.Rows.Add(new object[] { 5,103 });
dt.Rows.Add(new object[] { 5,107 });
dt.Rows.Add(new object[] { 6,108 });
dt.Rows.Add(new object[] { 7,108 });
dt.Rows.Add(new object[] { 7,103 });
dt.Rows.Add(new object[] { 7,105 });
dt.Rows.Add(new object[] { 8,104 });
dt.Rows.Add(new object[] { 9,104 });
dt.Rows.Add(new object[] { 9,101 });
dt.Rows.Add(new object[] { 10,102 });
dt.Rows.Add(new object[] { 10,106 });
void printTable(DataTable table)
string data = string.Empty;
StringBuilder sb = new StringBuilder();
if (null != table && null != table.Rows)
foreach(DataColumn dataColumn in table.Columns)
sb.Append(dataColumn.ColumnName);
sb.Remove(sb.ToString().Length -1,1);
sb.Append("----------------------------------------");
foreach (DataRow dataRow in table.Rows)
foreach (var item in dataRow.ItemArray)
sb.Remove(sb.ToString().Length -2,1);