Вы можете сделать некоторую группировку в Linq следующим образом:
var items = from r in rows
group r by r.ID into g
select new { Count = g.Count(), First = g.First() };
... но это даст вам коллекцию объектов со свойством Count (int) и свойством First (того же типа, что и ваши строки).
То, что вы можете сделать, - это выбрать что-то похожее на вашу строку, за исключением свойства count. Один из способов сделать это - поле за полем, например:
var items = from r in rows
group r by r.ID into g
let f = g.First()
select new
{
f.ID, f.Name, f.Foo, f.Bar, // etc
Count = g.Count()
};