• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#linqlambda分组获取最新的数据

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  菜鸡一枚,脑子是个好东西可惜没有,只能依托博客记录一下,弥补一下二缺

1、linq 

    ①、数据

 var id = Guid.Parse("04245059-9251-44e1-4c16-08d6be4a0add");
            Guid id2 = Guid.Parse("12385059-9251-44e1-4c16-08d6be4a0add");

            var time = DateTime.Now;
            var time2 = time.AddHours(5);
            List<list_data> list = new List<list_data>()
            {
                new list_data (){  id=id,name="1三",time=time,flag="sun" },
                new list_data (){  id=id,name="1四",time=time, flag="moon" },
                new list_data (){  id=id,name="1五",time=time, flag="star" },
                new list_data (){  id=id,name="1六",time=time.AddDays(1),flag="moon" },
                new list_data (){  id=id,name="1七",time=time.AddDays(1),flag="sun" },
                new list_data (){  id=id,name="1九",time=time.AddDays(1),flag="star" },
                new list_data (){  id=id2,name="2九",time=time2,flag="sun" },
                new list_data (){  id=id2,name="2四",time=time2, flag="moon" },
                new list_data (){  id=id2,name="2五",time=time2, flag="star" },
                new list_data (){  id=id2,name="2六",time=time2.AddDays(1),flag="moon" },
                new list_data (){  id=id2,name="2七",time=time2.AddDays(1),flag="sun" },
                new list_data (){  id=id2,name="2三",time=time2.AddDays(1),flag="star" }
            };

  ②、linq

var query = list.AsQueryable();
            var data = from item in query
                       orderby item.time descending
                       group item by new { item.id ,item.time}
                       into g_data//根据id、time分成4组
                       group g_data by g_data.Key.id into last_data
                       select last_data.FirstOrDefault();//根据id分成2组【1组里面又包含2组】获取第一组

 

  ③、lambda

 var lambda = query.OrderByDescending(p => p.time).GroupBy(g => new { g.id, g.time })
                      .GroupBy(g => g.Key.id).Select(p=>p.FirstOrDefault());

 

2、第二种

①、linq

   var data2 = from item in query
                        group item by new { item.id, item.flag }
                        into g_data
                        select g_data.OrderByDescending(p => p.time).FirstOrDefault()//根据id、flag分成6组获取每组第一个【凑成一个组】
                        into datas group datas by datas.id//根据id分组分成两组
                        into  last_data select last_data;

 ②、lambda

var labmbda2 = query.GroupBy(g => new { g.id, g.flag }).Select(p =>p.OrderByDescending(t=>t.time).FirstOrDefault()).GroupBy(g => g.id);

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中webBrowser加载页面中的不同域的iFrame的源代码的取得发布时间:2022-07-10
下一篇:
C#封装C++DLL(特别是char*对应的string)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap