如果陈述相互矛盾-如何纠正

本文关键字:何纠正 相互矛盾 陈述 如果 | 更新日期: 2023-09-27 18:05:26

我有两个if语句,它们都是相互冲突的。

默认情况下,我可以从if语句中通过DatesDrop Down列表进行过滤:

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

有可能让这两个工作吗?

任何帮助将是一个伟大的帮助:)

如果陈述相互矛盾-如何纠正

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

filteredTracks = filteredTracks.Where(...

其中filteredTracks已经包含了第一个if语句的结果