根据时间过滤LINQ集合

来源:互联网 发布:淘宝分期买手机靠谱吗 编辑:程序博客网 时间:2024/06/07 02:14
    public void SearchByKeyWords(Dictionary<string, string> keyWords)
        {
            if (RegulationList != null && RegulationList.Count>0)
            {
                List<TabRegulation> result = RegulationList.ToList();
                if (keyWords.Count == 0)
                {
                    return;
                }
                foreach (string key in keyWords.Keys)
                {
                    switch (key)
                    {
                        case "bt":
                            result = RegulationList.Where<TabRegulation>(n => n.RTitle.Contains(keyWords[key])).ToList();
                            break;
                        case "wh":
                            result = result.Where<TabRegulation>(n => n.RNumber.Contains(keyWords[key])).ToList();
                            break;
                        case "bbdw":
                            result = result.Where<TabRegulation>(n => n.Agency.Contains(keyWords[key])).ToList();
                            break;
                        case "bbrqk"://颁布日期开始日期
                            DateTime dt = Convert.ToDateTime(keyWords[key]);
                            dt = Convert.ToDateTime(dt.Year.ToString() + "/" + dt.Month.ToString() + "/" + dt.Day.ToString() + " 12:00:00");
                            List<TabRegulation> result1 = new List<TabRegulation>();
                            foreach (TabRegulation d in result)
                            {
                                DateTime dApplyDate=(DateTime)(d.ReleaseDate);
                                if (dt < dApplyDate)
                                {
                                    result1.Add(d);
                                }                               
                            }
                            result = result1;
                            break;
                        case "bbrqj"://颁布日期结束日期
                            DateTime dtj = Convert.ToDateTime(keyWords[key]);
                            dtj = Convert.ToDateTime(dtj.Year.ToString() + "/" + dtj.Month.ToString() + "/" + dtj.Day.ToString() +  " 23:59:59");
                            List<TabRegulation> resultj = new List<TabRegulation>();
                            foreach (TabRegulation d in result)
                            {
                                DateTime dApplyDate = (DateTime)(d.ReleaseDate);
                                if (dApplyDate < dtj)
                                {
                                    resultj.Add(d);
                                }
                            }
                            result = resultj;
                            break;
                        case "ssrqk"://实施日期
                            DateTime ssrqk = Convert.ToDateTime(keyWords[key]);
                            ssrqk = Convert.ToDateTime(ssrqk.Year.ToString() + "/" + ssrqk.Month.ToString() + "/" + ssrqk.Day.ToString() + " 12:00:00");
                            List<TabRegulation> ssrqklist = new List<TabRegulation>();
                            foreach (TabRegulation d in result)
                            {
                                DateTime dApplyDate = (DateTime)(d.ApplyDate);
                                if (ssrqk < dApplyDate)
                                {
                                    ssrqklist.Add(d);
                                }
                            }
                            result = ssrqklist; 
                            break;
                        case "ssrqj"://实施日期
                            DateTime ssrqj = Convert.ToDateTime(keyWords[key]);
                            ssrqj = Convert.ToDateTime(ssrqj.Year.ToString() + "/" + ssrqj.Month.ToString() + "/" + ssrqj.Day.ToString() + " 23:59:59");
                            List<TabRegulation> ssrqjlist = new List<TabRegulation>();
                            foreach (TabRegulation d in result)
                            {
                                DateTime dApplyDate = (DateTime)(d.ApplyDate);
                                if (dApplyDate < ssrqj)
                                {
                                    ssrqjlist.Add(d);
                                }
                            }
                            result = ssrqjlist;                           
                            break;
                    }
                }
                RegulationList = new ObservableCollection<TabRegulation>(result);
            }
        }