I want to get count of comments of my products and last comment.

So This is my linq to SQL code:

```
from c in Filter<Comment>().OrderByDescending(m => m.Date)
join p in Filter<Product>() on c.ProductId equals p.Id
join u in Context.ShopUsers on c.CustomerId equals u.Id
group c by c.ProductId into g
select new CommentViewModel
                      {
                          Comment = g.OrderByDescending(m => m.Date).FirstOrDefault(),
                          Product = g.OrderByDescending(m => m.Date).FirstOrDefault()
                                  .Product.Name,
                          UserName = g.OrderByDescending(m => m.Date).FirstOrDefault()
                              .Customer.RealUserName,
                          Name = g.OrderByDescending(m => m.Date).FirstOrDefault()
                          .Customer.FirstName + " " +
                          g.OrderByDescending(m => m.Date).FirstOrDefault()
                          .Customer.LastName,
                          Comments = g.Count()
                      };

```

I want to avoid this repetitive code for getting first entity.

How can i do that?