首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求大神帮忙指导下

2013-03-26 
求大神帮忙指点下 class uu{public string Namepublic DateTime Date} Listuu list new Listuu()

求大神帮忙指点下
 class uu
    {
        public string Name;
        public DateTime Date;
    }

 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") });

问题:
1、提取出有两条数据的用户
2、在提取的这些用户里面, 找出第二条数据中日期最小的
[解决办法]
遍历一次不就都出来了么,遍历的同时最小的日期都出来了
[解决办法]
 var source = list.GroupBy(t => t.Name).Where(t => t.Count() == 2).ToList();
            foreach (var s in source)
            {
                var temp = s.OrderBy(t => t.Date).First();

                Console.WriteLine(temp.Name + "   " + temp.Date);
                
            }
[解决办法]


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 一下就出来了
[解决办法]
引用:
 class uu
    {
        public string Name;
        public DateTime Date;
    }

 List<uu> list = new List<uu>();
            list.Add(new uu() { Name = "张三", Date = Convert.ToDateTime("2012-3-……


var result = from u in list
                         group u by u.Name into g
                         from n in g.DefaultIfEmpty()
                         where n.Date == g.Min(c => c.Date)
                         orderby n.Name
                         select n;
                         

            string name="";
            DateTime date ;
            foreach (var nv in result)
            {
                name = nv.Name;
                date = nv.Date;
            }

热点排行