var query = from l in list
orderby l.Date descending
group l by l.Id
into t
select new
{
t.Key,
body = t.First().Body,
date = t.Max(l => l.Date)
};

 

var query =
from b in foodBase
from c in
(from c in foodComment orderby c.AddDate descending group c by c.BaseID into g select new { BaseID=g.Key, FirmName = g.First().FirmName, Price = g.Average(c => c.Price), AddDate = g.Max(c => c.AddDate), Comment = g.First().Content })
where b.Id == c.BaseID
select new
{
b.Id,
b.FoodName,
c.FirmName,
c.Comment,
c.Price,
c.AddDate
};