首页 > 其他分享 >面试题精选04-使用Linq怎么将数据分组之后按时间排序取最新1条数据

面试题精选04-使用Linq怎么将数据分组之后按时间排序取最新1条数据

时间:2024-11-20 22:18:21浏览次数:1  
标签:ProductTime 面试题 Name 04 Area Linq DateTime item new

实体类

public class Movie
{
    public string Name { get; set; }

    public string Area { get; set; }

    public DateTime ProductTime { get; set; }
}

初始化数据

public static List<Movie> InitData()
{
    List<Movie> data = new List<Movie>()
    {
        new Movie(){ Name="功夫",Area="中国香港",ProductTime=new DateTime(2004, 12, 23) },
        new Movie(){ Name="无间道",Area="中国香港",ProductTime=new DateTime(2002, 12, 12) },
        new Movie(){ Name="霍元甲",Area="中国大陆",ProductTime=new DateTime(2006, 01, 25) },
        new Movie(){ Name="我不是药神",Area="中国大陆",ProductTime=new DateTime(2018, 07, 05) },
        new Movie(){ Name="让子弹飞",Area="中国大陆",ProductTime=new DateTime(2010, 12, 16) },
        new Movie(){ Name="肖申克的救赎",Area="美国",ProductTime=new DateTime(1994, 09, 10) },
        new Movie(){ Name="阿甘正传",Area="美国",ProductTime=new DateTime(1994, 07, 06) },
        new Movie(){ Name="蜘蛛侠2",Area="美国",ProductTime=new DateTime(2004, 06, 30) },
    };
    return data;
}

方式一

 static void Main(string[] args)
 {
     List<Movie> data = InitData();

     var groupData = data.OrderByDescending(a => a.ProductTime).GroupBy(a => a.Area).Select(group => new
     {
         Area = group.Key,
         Name = group.FirstOrDefault().Name,
         ProductTime = group.FirstOrDefault().ProductTime
     });

     foreach (var item in groupData)
     {
         Console.WriteLine($"电影名称:{item.Name},上映地区:{item.Area},上映时间:{item.ProductTime.ToString("yyyy-MM-dd")}");
     }
 }

方式二

 static void Main(string[] args)
 {
     List<Movie> data = InitData();
     var groupData = data.GroupBy(a => a.Area).Select(group => group.OrderByDescending(item=>item.ProductTime).FirstOrDefault());
     
     foreach (var item in groupData)
     {
         Console.WriteLine($"电影名称:{item.Name},上映地区:{item.Area},上映时间:{item.ProductTime.ToString("yyyy-MM-dd")}");
     }
 }

方式三

static void Main(string[] args)
{
    List<Movie> data = InitData();
    var groupData = from item in data
                            orderby item.ProductTime descending
                            group item by item.Area into groupdata
                            select groupdata.FirstOrDefault();

    foreach (var item in groupData)
    {
        Console.WriteLine($"电影名称:{item.Name},上映地区:{item.Area},上映时间:{item.ProductTime.ToString("yyyy-MM-dd")}");
    }
}

image

标签:ProductTime,面试题,Name,04,Area,Linq,DateTime,item,new
From: https://www.cnblogs.com/mingcore/p/18559480

相关文章

  • springboot049在线教育系统设计与实现
    ......
  • springboot049在线教育系统设计与实现
    ......
  • 面试题精选03-单例服务内使用作用域服务会存在什么问题
    存在的问题由于单例服务的生命周期远远超过作用域服务的生命周期,因此可能会在作用域服务被销毁后,尝试使用已经不再有效的服务实例。解决办法不在单例服务内直接使用作用域服务,而是通过依赖注入获取作用域服务。例如,你可以将需要使用的作用域服务作为构造函数参数传递到单例服务......
  • Ubuntu 24.04上安装JupyterLab并远程访问
    更新你的Ubuntu软件包索引。 sudoaptupdate 现在通过Ubuntu软件源安装Python3和Node.js,方法如下--输入"Y"确认安装: sudoaptinstallpython3-devpython3-pippython3-venvnodejsnpm安装Jupyter 安装完依赖项后,您将在Python虚拟环境中通过Pip安装Jup......
  • java高频面试题(八股文)
    基础/集合1.ArrayList/LinkedList有什么区别?1、数据结构: 在数据结构上,ArrayList 和 LinkedList 都是 “线性表”,都继承于 Java 的 List 接口。另外 LinkedList 还实现了 Java 的 Deque 接口,是基于链表的栈或队列,与之对应的是 ArrayDeque 基于数组的栈或队......
  • JVM 场景面试题【强烈推荐】
    前言:前面系列文章让我们对JVM及垃圾回收相关的知识有了一个基本的了解,JVM的知识比较偏概念,当然也有一些底层的源码可以去研读,但多数来说我们了解了JVM的原理即可,本篇我们将基于前面分享的JVM相关的原理知识,提取一些JVM中场景的面试题,希望可以帮助到有需要的朋友。......
  • [SAS 扩展器]入门级12 Gb/s SX03-0B00-00/SX04-0B00-00 和 采用SAS-4技术SX06-0B00-02
    为数据密集型应用程序启用海量存储基础设施。SAS扩展器允许服务器、控制器卡和外部存储连接到大量驱动器。DataBolt技术聚合了SATA存储设备的带宽,以提供更高的系统性能。SX03-0B00-00入门级12Gb/sSAS35x36RSAS扩展器SX04-0B00-00入门级12Gb/sSAS35x28RSAS扩展器S......
  • SpringBoot租车系统东华理工大学tds04(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着东华理工大学的快速发展,师生及访客对于便捷出行工具的需求日益增长。传统的公共交通和私家车出行方式在某些情况下已无法满......
  • Spring Cloud 经典面试题
    一、谈谈SpringCloud优缺点? SpringCloud的优点是:集成度高、生态丰富、可扩展性强、功能全面。SpringCloud的缺点是:学习曲线陡峭、有一定的性能开销、组件迭代快版本多、管理复杂。集成度高:SpringCloud集成了多个成熟的微服务组件(如Eureka、Zuul、Ribbon、Hystrix、Sl......
  • SpringBoot养老院管理系统04077 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,员工,老人信息,接待信息,床位信息,床位安排,外出信息,转房信息,退房信息,货品分类,货品信息,入库信息,出库信息,员工工资开题报告内容一、项目背......