111,092
社区成员




var res = dtUsers.Join(groups, x => x.Name, y => y.Name,
(x, y) => new { Name = x.Name, Time = x.Time, minTime = y.minTime }).OrderBy(x => x.minTime).ThenBy(x => x.Time).ToArray();
list=list.OrderBy(l=>l.time).ThenBy(l=>l.Name.GetHashCode()).ToList();
结果为:
1 12:01 小王
3 12:03 小花
5 12:05 小李
2 12:06 小李
6 12:07 小王
4 12:08 小王
1 12:01 小王
6 12:07 小王
4 12:08 小王
3 12:03 小花
5 12:05 小李
2 12:06 小李
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="小李"},
new myClass{ID=6, time=DateTime.ParseExact("12:07","HH:mm",null), Name="小王"},
};
list=list.OrderBy(l=>l.time).GroupBy(x=>x.Name).SelectMany(x=>x).ToList();
list.ForEach(l=>Console.WriteLine("{0}\t{1}\t{2}",l.ID,l.time.ToString("HH:mm"),l.Name));
}
class myClass
{
public int ID {get;set;}
public DateTime time {get;set;}
public string Name {get;set;}
}
//先分组
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;