我有两个if
语句,它们彼此冲突。
默认情况下,我可以根据此Dates
声明Drop Down
和if
列表进行过滤:
DateTime fromDate = DateTime.MinValue;
DateTime toDate = DateTime.MaxValue;
if (dateFilter.Contains('~'))
{
fromDate = dateFilter.Split('~')[0] == "" ? DateTime.MinValue : Convert.ToDateTime(dateFilter.Split('~')[0]);
toDate = dateFilter.Split('~')[1] == "" ? DateTime.MaxValue : Convert.ToDateTime(dateFilter.Split('~')[1]);
}
filteredTracks = DataRepository.GetTracks()
.Where(c => (trackFilter == "" || c.TrackName.ToLower().Contains(trackFilter.ToLower()))
&&
(fromDate == DateTime.MinValue || fromDate < c.Date)
&&
(toDate == DateTime.MaxValue || c.Date < toDate)
);
但如果正在使用上述if
语句,则无法使用此if (!string.IsNullOrEmpty(param.sSearch))
{
var isTrackSearchable = Convert.ToBoolean(Request["bSearchable_1"]);
filteredTracks = DataRepository.GetTracks()
.Where(c => isTrackSearchable && c.TrackName.ToLower().Contains(param.sSearch.ToLower()));
}
else
{
filteredTracks = allTracks;
}
语句执行常规过滤记录:
{{1}}
是否可以让这两种方法都有效?
任何帮助都会有很大帮助:)
答案 0 :(得分:0)
在这种情况下,您可以重复使用相同的查询,有条件地添加Where
子句。例如。对于第二个if语句,你可以做到:
filteredTracks = filteredTracks.Where(...
filteredTracks
已包含第一个if语句的结果。