using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; //csc LINQ_GroupBy1.cs namespace ConsoleApplication1 { class ObjectFacotry { public string Name { get; set; } public string Subject { get; set; } public int CourseID { get; set; } public int ID { get; set; } public List Scores { get; set; } public ListgetStudent() { List students = new List() { new ObjectFacotry { Name="Daniel",Subject="Chemistry",ID=8, Scores= new List {96, 92, 94, 99} }, new ObjectFacotry { Name="David",Subject="Chemistry",ID=8 , Scores= new List {94, 92, 94, 87} }, new ObjectFacotry { Name="Brandon",Subject="Chemistry",ID=8 , Scores= new List {99, 92, 94, 89} }, new ObjectFacotry { Name="Zared",Subject="English",ID=4 , Scores= new List {99, 92, 94, 95} }, new ObjectFacotry { Name="Vishal",Subject="History",ID=1 , Scores= new List {99, 92, 94, 95} } }; return students; } } class Program { static void Main(string[] args) { ObjectFacotry students = new ObjectFacotry(); IEnumerable st = students.getStudent(); var query1 = from s1 in st group s1 by s1.Subject; // var query2 = st.Where(sub => sub.Subject == "Chemistry").GroupBy(cid => cid.ID); foreach (var item in query1) { //Console.WriteLine(item.Subject + " \t " // + item.Name + " \t " + item.CourseID.ToString()); Console.WriteLine(item.Key); Console.WriteLine("-----------------"); foreach (var t in item) { Console.WriteLine("Name :" + t.Name + ", ID : " + t.ID + ", subject: " + t.Subject + ", Avg Score: " + t.Scores.Average().ToString()); } } //Console.Write(objList); Console.ReadLine(); } } }