我有以下列表项目,以便清楚地显示我可以看到下面的小列表,可能是数百行. CourseId ClassName StartDate-------- -------- -------- 12321 Math 08-25-2017 32342 Physics 08-25-2017 34345 Chemistry 08-25-2017 25325 Math
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();