从c#列表中获取昨天的记录

本文关键字:昨天 记录 获取 列表 | 更新日期: 2023-09-27 18:05:54

我设置了一个7列数千行的列表。我还有一个具有相同数据的数据表(是的,冗余)。我想做的是得到与昨天的日期有关的所有记录。

我已经开始对数据表进行一些查询,但没有成功。它总是空空如也。列表也一样

下面是表/列表的所有代码。

     DataTable dtTesting = new DataTable();
            List<string>[] listA = new List<string> [8];
            listA[0] = new List<string>();
            listA[1] = new List<string>();
            listA[2] = new List<string>();
            listA[3] = new List<string>();
            listA[4] = new List<string>();
            listA[5] = new List<string>();
            listA[6] = new List<string>();
            listA[7] = new List<string>();
            dtTesting.Columns.Add("Over2Minutes", typeof(string));
            dtTesting.Columns.Add("AgentName", typeof(string));
            dtTesting.Columns.Add("PhoneNumber", typeof(string));
            dtTesting.Columns.Add("DateTime", typeof(DateTime ));
            dtTesting.Columns.Add("Direction", typeof(string));
            dtTesting.Columns.Add("CallTo", typeof(string));
            dtTesting.Columns.Add("ManagerName", typeof(string));
            dtTesting.Columns.Add("Duration", typeof(string));
            // List<string> listE = new List<string>();
            //List<string> listF = new List<string>();
            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var values = line.Split(',');
                DataRow data = dtTesting.NewRow();
                data["Over2Minutes"] = values[0];
                data["AgentName"] = values[1];
                data["PhoneNumber"] = values[2];
                data["DateTime"] = values[3];
                data["Direction"] = values[4];
                data["CallTo"] = values[5];
                data["ManagerName"] = values[6];
                data["Duration"] = values[7];
                listA[0].Add(values[0]);
                listA[1].Add(values[1]);
                listA[2].Add(values[2]);
                listA[3].Add(values[3]);
                listA[4].Add(values[4]);
                listA[5].Add(values[5]);
                listA[6].Add(values[6]);
                listA[7].Add(values[7]);

            } 
            //start of filters
            DataTable filtered = new DataTable();
            DateTime yesterday = DateTime.Today.AddDays(-1);
            DateTime today = DateTime.Today.AddDays(1);
            //List<string> listBD = new List<string>();
           // listBD.AddRange(listB);
         //   listBD.AddRange(listD);
           // 

            if (cbDayList.SelectedIndex == 0)
            {
                try
                {
                  var FilteredData =   
                }
                catch
                {
                    MessageBox.Show("No Data To Show");
                }
            }

从c#列表中获取昨天的记录

如果要根据特定数据筛选DataTable行,则使用DataTable的Select方法。但是,由于Select方法的FilterExpression是字符串,因此必须将DateTime变量转换为字符串。这就是问题开始的地方。

不能使用DateTime到字符串的默认转换,因为在DateTime的情况下,FilterExpression要求根据InvariantCulture格式表示日期。"M/d/yyyy"

 var FilteredData = dtSettings.Select("DateTime >= #" + 
                                      yesterday.ToString("M/d/yyyy") + 
                                      "# AND date <= #" + 
                                      today.ToString("M/d/yyyy") + "#"); 
顺便说一下,尽管不太可能,这个查询也得到正好在午夜存储的记录。也许你需要< today.ToString("M/d/yyyy") 另一种实现目标的方法是通过IEnumerable扩展Where (Linq namespace)
 var  FilteredData = dtSettings.AsEnumerable()
              .Where(x => x.Field<DateTime>("DateTime") >= yesterday &&
                          x.Field<DateTime>("DateTime") < today);