Step: 2 Codes: in the classes
Student.cs
using System;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
/// <summary>
/// Summary description for Player
/// </summary>
public class Student
{
public string Name { get; set; }
public string Subject { get; set; }
public int ID { get; set; }
public List<int> Scores { get; set; }
public Student()
{
// TODO: Add constructor logic here
}
public Student[] GetStudent()
{
Student[] student =
{ new Student { Name="Daniel",Subject="Chemistry",ID=8, Scores= new List<int>
{96, 92, 94, 99} },
new Student { Name="David",Subject="Chemistry",ID=8 , Scores= new List<int>
{94, 92, 94, 87} },
new Student { Name="Brandon",Subject="Chemistry",ID=8 , Scores= new List<int>
{99, 92, 94, 89} },
new Student { Name="Zared",Subject="English",ID=4 , Scores= new List<int>
{99, 92, 94, 95} },
new Student { Name="Vishal",Subject="History",ID=1 , Scores= new List<int>
{99, 92, 94, 95} } };
return student;
}
}
Teacher.cs
using System;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
/// <summary>
/// Summary description for Teacher
/// </summary>
public class Teacher
{
public string Name { get; set; }
public string Subject { get; set; }
public int CourseID { get; set; }
public List<int> Scores { get; set; }
public Teacher()
{
// TODO: Add constructor logic here
}
public Teacher[] GetTeacher()
{
Teacher[] teacher = { new Teacher { Name="Mr.Smth",Subject="Chemistry",CourseID=8
},
new Teacher { Name="Ms.Jones",Subject="Music",CourseID=6 },
new Teacher { Name="Ms.Kovak",Subject="English",CourseID=4 },
new Teacher { Name="Mr.Menon",Subject="History",CourseID=1 } };
return teacher;
}
}
Manager.cs
using System;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
/// <summary>
/// Summary description for Manager
/// </summary>
public class Manager
{
public string Name { get; set; }
public string Div { get; set; }
public Manager()
{
//
// TODO: Add constructor logic here
//
}
}
EMP.cs
using System;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
/// <summary>
/// Summary description for EMP
/// </summary>
public class EMP
{
public string Name { get; set; }
//Get Manager class
public Manager DIV { get; set; }
public EMP()
{
//
// TODO: Add constructor logic here
//
}
}
Default.aspx.cs
using System;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Manager HR = new Manager { Name = "Smith, Lorren", Div="HR" };
Manager Sales = new Manager { Name = "Hensen, Rod",Div="Sales" };
Manager IT = new Manager { Name = "Patel, Dinesh", Div="IT" };
//one to many grouping and with left or inner join
EMP clerk = new EMP { Name = "Neelam, Batra", DIV = Sales };
EMP salesrep = new EMP { Name = "Joe, Hernandez", DIV = Sales };
EMP technician = new EMP { Name = "Shean, Delan", DIV = IT };
EMP developer = new EMP { Name = "Noore, Ahamed", DIV = IT };
EMP hrclerk = new EMP { Name = "Danile, Dores", DIV = HR };
EMP hrrep = new EMP { Name = "Stan, Reges", DIV = HR };
//Listing the object from Manager and EMPclass
List<Manager> staff = new List<Manager> { HR, Sales, IT };
List<EMP> emps = new List<EMP> { clerk, salesrep, technician,
developer,hrclerk,hrrep };
//GroupJoin
// anonymous type that contains a admins's name and
// a collection of names of the emps and the division they manage
var query = staff.GroupJoin(emps, admins => admins, emp => emp.DIV,
(admins, empMany) =>
new
{
adminsName = admins.Name, adminDiv = admins.Div,
empsName = empMany.Select(emp => emp.Name)
});
L1.Text += "<u> DIV empMany-Collection </u><br/>"; ;
foreach (var obj in query)
{
// Output the owner's name.
L1.Text +=" <u>Manager </u>: " + obj.adminsName + " <u>Div</u> "+
obj.adminDiv+ " <u>Emp</u>: ";
// Output each of the owner's emp's names.
foreach (string emp in obj.empsName)
{
L1.Text += " "+ emp + " ; ";
}
L1.Text += "<br/>";
}
Student students = new Student();
Teacher teachers = new Teacher();
Student[] st = students.GetStudent();
Teacher[] ts = teachers.GetTeacher();
// Inner Join
var query2 = from tech in ts
join std in st on tech.Subject equals std.Subject
select new
{
TeacherName = tech.Name,
TeacherSubject = tech.Subject,
StudentName = std.Name
};
L1.Text += "<br/><u> Teacher Student-Collection Subject </u><br/>";
foreach (var item in query2)
{
L1.Text += item.TeacherName + " " + item.TeacherSubject +" " +
item.StudentName + "<br/>";
// L1.Text += item.TeacherName + " " + item.TeacherSubject;
// foreach (var str in item.StudentName)
// {
// L1.Text += str;
// }
L1.Text += " ";
}
}
}
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>mm.LINQIntro20B : groupin and group method</title>
<link href="main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="div1">
<table ><tr><td colspan="2" >
Grouping : This is an extension of mm.LINQIntro13, mm.LINQIntro20,
here
we are testing and compring Group and Groupin , </td>
</tr>
<tr>
<td id="td1" ><asp:Label ID="L1" runat="server" Text=""></asp:Label>
</td>
<td id="td2"> </td>
</tr><tr><td > </td>
<td > </td>
</tr>
</table>
</div>
</form>
</body>
</html>