我有以下列表项目,以便清楚地显示我可以看到下面的小列表,可能是数百行.
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
Run Code Online (Sandbox Code Playgroud)
我有ClassName和Date传递来检索相应的对象.我很难如何Date在LINQ中实现参数
public Course GetClassesByNameAndDate(string className, DateTime date, List<Courses> allCourses)
{
Course course = allCourses.Where( x=> x.ClassName == className & x.StartDate <= date );
}
Run Code Online (Sandbox Code Playgroud)
例如,我实现的逻辑返回了两个类.但是,我只需要让startdate的项目更接近给定日期.
如果我通过today date并且课程名称为Math,那么它应该25325 courseID从列表中返回我的对象.
即使有两门数学课程,但已开始01-25-2018的课程是给定日期的最新课程.
在其他示例中,如果我给出一个日期01-01-2018,那么它应该返回12321该对象.因为01-01-2018早于2532501-25-2018的开始日期.
你可以,OrderBy()或者OrderByDescending(),它是稳定的排序,所以你可以选择第一个使用FirstOrDefault()或只是First()
allCourses.Where( x=> x.ClassName == className && x.StartDate <= date ).OrderByDescending(x=> x.StartDate ).FirstOrDefault();