String Date = "17/3/2015"; DateTime StartDate = Convert.ToDateTime(Date); DateTime EndDate = StartDate.AddDays(7); Console.WriteLine("Report Generated From {0} to {1}",StartDate,EndDate); var Connection = from C in Sessions where (C.StartDate >= StartDate && C.StartDate < EndDate && C.User != null) select new {C.SessionKey,C.User.UserName,C.StartDate,C.EndDate,C.CurrentConnection.ClientAddress,C.CurrentConnection.ClientVersion,DG = C.Machine.DesktopGroup.Name,ConnectedVia = C.CurrentConnection.ConnectedViaHostName}; //Console.WriteLine(Connection.ToList().GroupBy(u=>u.SessionKey).ToList()); var AppInst = from A in ApplicationInstances where A.Session.StartDate >= StartDate && A.Session.StartDate < EndDate select new { A.Session.SessionKey,A.Application.Name,A.StartDate,A.EndDate}; //Console.WriteLine(Connection.ToList()); //Console.WriteLine(AppInst.ToList()); var list3 = (from C in Connection.ToList() join A in AppInst.ToList() on C.SessionKey equals A.SessionKey // join on some property select new { C.UserName,A.StartDate,A.EndDate,ReciverVersion = C.ClientAddress,EndPointIP = C.ClientVersion,Application = A.Name,DesktopGroup = C.DG, C.ConnectedVia }); Console.WriteLine(list3.ToList());