Разве это не просто
var prod = (from t in _context.Product
group t by t.ProductAbbr
into g
select new
{
Id = (from t2 in g select t2.Id).Max()
}).ToList();
//int idlist = Int32.Parse(prod);
var request = (from p in _context.Product
join p1 in prod on p1.Id equals p.Id
select new
{
p.Id,
p.ProductAbbr
}).ToList().Distinct();
?
Обратите внимание, что я изменил
где (p => prod.Contains (p.Id))
To
присоединить p1 в prod на p1.Id равно p.Id
Обратите внимание, что это сделает ваш запрос синтаксическидопустимо, но, кажется, также возможно переработать его многими другими способами в соответствии с тем, что я вижу.Второй запрос, кажется, не приносит ничего полезного, по крайней мере, в вашем примере.