从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");
}
}
如果要根据特定数据筛选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);