加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在列表中找到相应的项目

发布时间:2020-12-16 01:27:05 所属栏目:百科 来源:网络整理
导读:我有以下列表项目,以便清楚地显示我可以看到下面的小列表,可能是数百行. CourseId ClassName StartDate-------- -------- -------- 12321 Math 08-25-2017 32342 Physics 08-25-2017 34345 Chemistry 08-25-2017 25325 Math 01-25-2018 44345 Chemistry 01-2
我有以下列表项目,以便清楚地显示我可以看到下面的小列表,可能是数百行.

CourseId    ClassName    StartDate
--------    --------      --------  
12321       Math         08-25-2017  
32342       Physics      08-25-2017  
34345       Chemistry    08-25-2017 
25325       Math         01-25-2018     
44345       Chemistry    01-25-2018

我有要传递的ClassName和Date来检索相应的对象.我很难如何在LINQ中实现Date参数

public Course GetClassesByNameAndDate(string className,DateTime date,List<Courses> allCourses)
{
    Course course  = allCourses.Where( x=> x.ClassName == className & x.StartDate <= date );

}

例如,我实现的逻辑返回了两个类.但是,我只需要让startdate的项目更接近给定日期.

如果我今天将日期和课程名称作为Math传递,那么它应该从列表中返回25325 courseID对象.

虽然有两门数学课程,但是已经开始01-25-2018的课程是给定日期的最新课程.

在其他示例中,如果我给出日期01-01-2018,那么它应该返回12321该对象.因为01-01-2018早于25325 startdate,即01-25-2018.

解决方法

你可以 OrderBy()OrderByDescending(),它是稳定的排序,所以你可以选择第一个使用 FirstOrDefault()或只是 First()

allCourses.Where(x => x.ClassName == className&& x.StartDate< = date).OrderByDescending(x => x.StartDate).FirstOrDefault();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读