Not really LINQ's answer, but personally I would choose SQL for this to make sure that it doesn't do any N + 1, etc .; eg:
select s1.MemberID, COUNT(1) as [Count], (select top 1 ShippingName from Shipping s2 where s2.MemberID = s1.MemberID order by s2.ShippingDate desc) as [LastShippingName] from Shipping s1 group by s1.MemberID
Perhaps you can LINQ something like (untested):
var qry = from row in data group row by row.MemberId into grp select new { MemberId = grp.Key, Count = grp.Count(), LastShippingName = grp.OrderByDescending(x => x.ShippingDate).First().ShippingName };
source share