如果陈述相互冲突 - 如何纠正

时间:2014-05-27 12:42:40

标签: c# asp.net-mvc-3 if-statement

我有两个if语句,它们彼此冲突。

默认情况下,我可以根据此Dates声明Drop Downif列表进行过滤:

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}}

是否可以让这两种方法都有效?

任何帮助都会有很大帮助:)

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以重复使用相同的查询,有条件地添加Where子句。例如。对于第二个if语句,你可以做到:

filteredTracks = filteredTracks.Where(...

filteredTracks已包含第一个if语句的结果。