Step 3 : Code:
Class : 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;
}
}
Class : 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="English",CourseID=1 } };
return teacher;
}
}
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.LINQIntro20 : Count 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 : Key : This is an extension of
mm.LINQIntro13</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>
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)
{
Student students = new Student();
Teacher teachers = new Teacher();
Student[] st = students.GetStudent();
Teacher[] ts = teachers.GetTeacher();
var query1 = from s1 in st group s1 by s1.Subject;
var query2 = st.Where(sub => sub.Subject == "Chemistry").GroupBy(cid =>
cid.ID);
try
{
int schem = st.Count(sub => sub.Subject == "Chemistry");
int tchem = ts.Count(sub => sub.Subject == "Chemistry");
L1.Text+=("No.Of Students in Chemistry ." + schem);
L1.Text+=("<br/>No.Of Teacher in Chemistry ." + tchem);
L1.Text+="<br/><b> ---- query1 --<b/><br/>";
foreach (var item in query1)
{
L1.Text += "Key : " +item.Key +"<br/>";
foreach (var t in item)
{
L1.Text += "Name :"+ t.Name + ", ID : " + t.ID + ", subject: " + t.Subject
+ ", Avg Score: " + t.Scores.Average().ToString() + "<br/>";
}
}
L1.Text += "<br/><b> ----Where projection query1 --<b/><br/>";
foreach (var item in query2)
{
L1.Text += "Key : " + item.Key + "<br/>";
foreach (var t in item)
{
L1.Text += "Name :" + t.Name + ", ID : " + t.ID + ", subject: " +
t.Subject + ", Avg Score: " + t.Scores.Average().ToString() + "<br/>";
}}}
catch (OverflowException)
{
L1.Text+=("The count is too large to store as an Int32.");
L1.Text+=("Try using the LongCount() method instead.");
}}}