//先分组
var groups = from q in dtUsers
group q by q.Name into g
select new { Name = g.Key, minTime = g.Min(x => x.Time) };
//再排序
var res=from q in dtUsers
join g in groups on q.Name equals g.Name
orderby g.minTime,q.Time
select q;
------解决方案--------------------
void Main()
{
var list=new List<myClass>
{
new myClass{ID=1, time=DateTime.ParseExact("12:01","HH:mm",null), Name="小王"},
new myClass{ID=2, time=DateTime.ParseExact("12:06","HH:mm",null), Name="小李"},
new myClass{ID=3, time=DateTime.ParseExact("12:03","HH:mm",null), Name="小花"},
new myClass{ID=4, time=DateTime.ParseExact("12:08","HH:mm",null), Name="小王"},
new myClass{ID=5, time=DateTime.ParseExact("12:05","HH:mm",null), Name="小李"},