using System.Collections.Generic;
public static class Program
public static void Main()
List<StudentInfo> StudentsList = new List<StudentInfo>();
StudentsList.Add( new StudentInfo { Student="Gungun", University="cdf", GroupID = 1, IsQualified=false});
StudentsList.Add( new StudentInfo { Student="John", University="abc", GroupID = 1, IsQualified=false});
StudentsList.Add( new StudentInfo { Student="Jack", University="def", GroupID = 1, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Peter", University="abc", GroupID = 1, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Lemity", University="abc", GroupID = 1, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Donald", University="def", GroupID = 2, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Olivia", University="ggh", GroupID = 2, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Emity", University="OPQ", GroupID = 2, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Emma", University="OPQ", GroupID = 2, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Alan", University="OPQ", GroupID = 2, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Adam", University="yub", GroupID = 3, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Jacob", University="OPQ", GroupID = 3, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Matthew", University="OPQ", GroupID = 3, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Saint", University="abc", GroupID = 3, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Joshua", University="qer", GroupID = 3, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Aubrey", University="fef", GroupID = 3, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Caleb", University="DEF", GroupID = 4, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Anna", University="ABC", GroupID = 4, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Chill", University="GHI", GroupID = 4, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Alexis", University="JKL", GroupID = 4, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Zoe", University="MNO", GroupID = 4, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="Dylan", University="PQR", GroupID = 5, IsQualified=false} );
StudentsList.Add( new StudentInfo { Student="White", University="OPQ", GroupID = 5, IsQualified=false} );
Console.WriteLine(SomeFunction(StudentsList, p => p.IsQualified == true).Count());
Console.WriteLine(SomeFunction(StudentsList, p => p.Student == "John").Count());
Console.WriteLine(SomeFunction(StudentsList, p => p.GroupID == 1).Count());
Console.WriteLine("Use extionsion method");
Console.WriteLine(StudentsList.ExtensionMethod_SomeFunction(p => p.IsQualified == true).Count());
Console.WriteLine(StudentsList.ExtensionMethod_SomeFunction(p => p.Student == "John").Count());
Console.WriteLine(StudentsList.ExtensionMethod_SomeFunction(p => p.GroupID == 1).Count());
private static IEnumerable<IGrouping<int, StudentInfo>> SomeFunction(List<StudentInfo> list, Func<StudentInfo, bool> selector)
return list.GroupBy(x => x.GroupID)
.Where(g => g.Any(selector) )
public static IEnumerable<IGrouping<int, StudentInfo>> ExtensionMethod_SomeFunction(this IEnumerable<StudentInfo> list, Func<StudentInfo, bool> selector)
return list.GroupBy(x => x.GroupID)
.Where(g => g.Any(selector) )
public string Student { get; set; }
public string University { get; set; }
public int GroupID { get; set; }
public bool IsQualified {get; set;}