Вторая попытка.
var subquery =
(from r in table group r by new { r.col1, r.col2} into results
select new
{
results.Key.col1,
results.Key.col2,
MaxCol3 = results.Max(i=>i.col3)
}
) ;
var query2 =
(from r in subquery1
select new
{
r.col1 ,
r.col2 ,
r.MaxCol3 ,
col4 = (from x in subquery1
where r.col1 == x.col1 && r.col2 == x.col2 && x.col3 == r.MaxCol3
select x.col4).First()
}
);
Я никогда не использовал этот синтаксис, но я думаю, что вы также можете сделать что-то вроде.
(from r in table group r by new { r.col1, r.col2} into results
let MaxCol3 = results.Max(i=>i.col3)
select new
{
results.Key.col1,
results.Key.col2,
MaxCol3 ,
col4 = results.First(i=>i.col3 == MaxCol3).col4
}
) ;