var filteredItemNumber = 0;
if (!string.IsNullOrEmpty(searchTerm))
{
filteredItemNumber =
this._objectsRep.Find(
r =>
r.ObjectTitle.StartsWith(searchTerm) && r.CreatedDate >= timePeriod.Start
&& r.CreatedDate <= timePeriod.End).Count();
}
else
{
filteredItemNumber =
this._objectsRep.Find(t => t.CreatedDate >= timePeriod.Start && t.CreatedDate <= timePeriod.End)
.Count();
}
我确定必须有一个简短的方法来摆脱if语句,但我不知道如何。当我使用下面的代码时,过滤返回的结果与我期望的不同。也许括号不正确?有没有更好的缩短这个LINQ语句的方法?
this._objectsRep.Find(r =>
searchTerm == null || r.ObjectTitle.StartsWith(searchTerm) && r.CreatedDate >= timePeriod.Start
&& r.CreatedDate <= timePeriod.End).Count()
我想实现的是,如果serchTerm为空或null就忽略这个过滤器,但只能使用的时间范围。
感谢
'List.Find'不是LINQ。 –