我有以下列表项目以便清楚地显示。我可以想象下面的小列表,可能是数百行。
CourseId ClassName StartDate EndDate
-------- -------- --------
12321 Math 08-25-2017 null
14321 Math 08-25-2017 01-05-2018
32342 Physics 08-25-2017 null
34345 Chemistry 08-25-2017 null
25325 Math 01-25-2018 null
45329 Math 01-25-2018 null
33325 Math 01-25-2018 null
44345 Chemistry 01-25-2018 null
我有一个CourseId
列表来查找相应的项目。但是以下实现不会返回任何内容
public List<Courses> FindCourses(List<Guid> courseIds, DateTime date, List<Courses>allCourses)
{
return allCourses.Where(x => CourseId.ToString() == courseIds.ToString() && x.StartDate<= date && x.End_Date.HasValue ? x.End_Date.Value >= date : true).ToList();
}
CourseId
存储为GUID
。
答案 0 :(得分:3)
我认为这更符合您的需求,使用Contains
检查课程的ID是否在给定列表中。
public List<Courses> FindCourses(List<string> courseIds, DateTime date, List<Courses>allCourses)
{
return allCourses.Where(x => courseIds.Contains(x.CourseId) && x.StartDate<= date && x.End_Date.HasValue ? x.End_Date.Value >= date : true).ToList();
}
(我将您的课程ID更改为字符串,但如果他们是int
或Guid
s或其他任何内容,您可以将其更改为Course.CourseId
类型的任何内容。)< / p>
您还可以稍微简化EndDate检查:
public List<Courses> FindCourses(List<string> courseIds, DateTime date, List<Courses>allCourses)
{
return allCourses.Where(x => courseIds.Contains(x.CourseId)
&& x.StartDate<= date
&& x.End_Date.HasValue || x.End_Date.Value >= date)
.ToList();
}
答案 1 :(得分:1)
从您提供的示例来看,您使用的是错误的类型。你也可能想检查列表是否包含id,而不是在列表上调用ToString,它只返回类型的名称,你很可能想要更接近这个(假设Ids是一个int而不是一个字符串)
var path = window.location.href;