日期:2014-05-20 浏览次数:20894 次
void Main()
{
    List<uu> list = new List<uu>();
    list.Add(new uu() { Name = "张三", Date = Convert.ToDateTime("2012-3-9") });
    list.Add(new uu() { Name = "李四", Date = Convert.ToDateTime("2012-3-17") });
    list.Add(new uu() { Name = "王五", Date = Convert.ToDateTime("2012-4-16") });
    list.Add(new uu() { Name = "李四", Date = Convert.ToDateTime("2012-3-2") });
    list.Add(new uu() { Name = "张三", Date = Convert.ToDateTime("2012-3-1") });
    list.Add(new uu() { Name = "张三", Date = Convert.ToDateTime("2012-5-3") });   
    list.Add(new uu() { Name = "王五", Date = Convert.ToDateTime("2012-6-29") });
    list.Add(new uu() { Name = "赵六", Date = Convert.ToDateTime("2012-8-9") });
    var query=from l in list
            group l by l.Name into g 
            where g.Count()==2
            select new uu{Name=g.Key, Date=g.Min(x=>x.Date)};
    query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}",q.Name,q.Date));
   /*
    李四    2012-3-2 0:00:00
    王五    2012-4-16 0:00:00
   */
}
class uu
  {
  public string Name;
  public DateTime Date;
  }
------解决方案--------------------
1、提取出有两条数据的用户
2、在提取的这些用户里面, 找出第二条数据中日期最小的
这两个问题可以一次性解决,第一个问题,直接GroupBy一下,取Count==2的数据,第一个问题直接在第一个问题上根据Date  order by 一下就出来了
------解决方案--------------------