C# c中csv文件中包含日期范围的筛选行#
我是c#新手,也处理csv文件。我需要过滤csv文件使用的日期范围 csv文件的内容如下所示 “员工代码”、“日期”、“时间”、“类型”C# c中csv文件中包含日期范围的筛选行#,c#,csv,C#,Csv,我是c#新手,也处理csv文件。我需要过滤csv文件使用的日期范围 csv文件的内容如下所示 “员工代码”、“日期”、“时间”、“类型” “3434”、“01/22/2013”、“07:54”、“0” “3023”、“01/23/2014”、“07:54”、“0” “2897”、“01/24/2015”、“07:54”、“0” “3734”、“01/25/2015”、“07:54”、“0” “3168”、“01/26/2015”、“07:54”、“0” “4863”、“01/26/2015”、“
“3434”、“01/22/2013”、“07:54”、“0”
“3023”、“01/23/2014”、“07:54”、“0”
“2897”、“01/24/2015”、“07:54”、“0”
“3734”、“01/25/2015”、“07:54”、“0”
“3168”、“01/26/2015”、“07:54”、“0”
“4863”、“01/26/2015”、“07:55”、“0”
“2513”、“01/27/2015”、“07:55”、“0”
“2582”、“01/27/2015”、“07:55”、“0”
这应该是输出: “员工代码”、“日期”、“时间”、“类型”
“3734”、“01/25/2015”、“07:54”、“0”
“3168”、“01/26/2015”、“07:54”、“0”
“4863”、“01/26/2015”、“07:55”、“0”
“2513”、“01/27/2015”、“07:55”、“0”
“2582”、“01/27/2015”、“07:55”、“0”
壳牌可以做到这一点,但c#不能做到这一点是不公平的。因为在互联网上搜索此类问题后,没有找到解决方案 正在尝试此代码
DateTime dFm = new DateTime(2015, 01, 25);
DateTime dTo = new DateTime(2015, 01, 27);
var lines = System.IO.File.ReadAllLines(txtFileName.Text);
var data = lines
.Skip(1)
.Select(x => new
{
EmpCode = Int32.Parse(x.Split(new string[] { @""",""", @""""
}, StringSplitOptions.RemoveEmptyEntries)[0]),
Date = DateTime.ParseExact(
string.Concat(x.Split(new string[] { @""",""", @"""" },
StringSplitOptions.RemoveEmptyEntries)[1], " ",
x.Split(new string[] { @""",""", @"""" },
StringSplitOptions.RemoveEmptyEntries)[2]),
"MM/dd/yyyy HH:mm",
System.Globalization.CultureInfo.InvariantCulture),
Type = x.Split(new string[] { @""",""", @"""" },
StringSplitOptions.RemoveEmptyEntries)[3]
})
.Where(x => x.Date >= dFm && x.Date <= dTo)
.ToList();
}
DateTime-dFm=新日期时间(2015,01,25);
DateTime dTo=新的日期时间(2015,01,27);
var lines=System.IO.File.ReadAllLines(txtFileName.Text);
var数据=行
.Skip(1)
.选择(x=>new
{
EmpCode=Int32.Parse(x.Split(新字符串[]{@“,”,@“)
},StringSplitOptions.RemoveEmptyEntries)[0],
Date=DateTime.ParseExact(
string.Concat(x.Split(新字符串[]{@“”,@“”,@“”),
StringSplitOptions.RemoveEmptyEntries)[1],“”,
x、 拆分(新字符串[]{@”“,@”“,@”“},
StringSplitOptions.RemoveEmptyEntries)[2],
“MM/dd/yyyy HH:MM”,
系统、全球化、文化信息、不变量文化),
Type=x.Split(新字符串[]{@“”,@“”,@“”),
StringSplitOptions.RemoveEmptyEntries[3]
})
。其中(x=>x.Date>=dFm和&x.Date通过以下方式实现您的目标相当容易:
var-dFm=新日期时间(2015,01,25);
var dTo=新日期时间(2015,01,27);
使用(var reader=File.OpenText(@“sample.csv”))
{
var csv=新的CsvReader(读卡器);
而(csv.Read())
{
变量日期=csv.GetField(“日期”);
如果(日期>=dFm&&
日期你是怎么认为C不能的?你试着写了什么代码?C可以,你不能:)呵呵,对像我这样的初学者来说是的。我回答的第一行是链接。它会带你到项目的网站上,在那里你可以找到库的所有详细信息。你能为我提供if语句吗?我只是举个例子。你的意思是这样的if语句:if(date>=dFm&&date是的。想把那些在范围内的行写入文件吗。
var dFm = new DateTime(2015, 01, 25);
var dTo = new DateTime(2015, 01, 27);
using (var reader = File.OpenText(@"sample.csv"))
{
var csv = new CsvReader(reader);
while (csv.Read())
{
var date = csv.GetField<DateTime>("Date");
if (date >= dFm &&
date <= dTo)
{
// process the filtered out records
}
}
}