This should do the trick:
var query = from row in dt.AsEnumerable()
where row.Field<string>("MinValue") != null && row.Field<string>("MaxValue") != null
group row by row.Field<string>("Name") into grp
let maxServiceDate = grp.Max(r => r.Field<DateTime>("ServiceData"))
from row in grp
where row.Field<string;>("ServiceData") == maxServiceDate
select row
Syed Mehroz Alam My Blog | My Articles
Computers are incredibly fast, accurate, and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination. - Albert Einstein