you can do this in one query in a similar fashion.
var Lst3 = (from Obj2 in Products.Where(p=>p.productprice <= 50).GroupBy(P => P.DateTime.Value.Hour).Select(g => new {Hours = g.Key, Counts = g.Count()})
join Obj in Products.GroupBy(P => P.DateTime.Value.Hour).Select(g => new {Hours = g.Key, Counts = g.Count()})
on Obj.Hours equals Obj2.Hours
where Obj.Hours > 0
select new {
Hours = Obj.Hours,
Counts = Obj.Counts/Obj2.Counts
}).ToList();