C# 使用ShouldSkipRecord筛选CSVHelper中的日期范围

C# 使用ShouldSkipRecord筛选CSVHelper中的日期范围,c#,csvhelper,C#,Csvhelper,在csvhelper中使用ShouldSkipRecord过滤日期范围会是什么样子 谷歌搜索了一大堆,但只有一个回调引用,这还不足以让我理解ShouldSkipRecord调用的语法应该是什么样子。你是按列和行来挑选的吗。API中有一条短线,就是它 if (File.Exists(lastPathName)) { using (var reader = new StreamReader(lastPathName))

在csvhelper中使用ShouldSkipRecord过滤日期范围会是什么样子

谷歌搜索了一大堆,但只有一个回调引用,这还不足以让我理解ShouldSkipRecord调用的语法应该是什么样子。你是按列和行来挑选的吗。API中有一条短线,就是它

if (File.Exists(lastPathName))
            {
                using (var reader = new StreamReader(lastPathName))
                using (var csv = new CsvReader(reader))
                {
                    csv.Configuration.HasHeaderRecord = false;
                    csv.Configuration.RegisterClassMap<QuotedataMap>();
                    csv.Configuration.ShouldSkipRecord = row => row[0] >= DateTime.Parse("12/12/2019");
                    var records =  csv.GetRecords<Quotedata>();
                    return records;
                }
            }


public sealed class QuotedataMap : ClassMap<Quotedata>
    {
        public QuotedataMap()
        {
            Map(m => m.QuoteDate).Index(0);
            Map(m => m.OpenPrice).Index(1);
            Map(m => m.HighPrice).Index(2);
            Map(m => m.LowPrice).Index(3);
            Map(m => m.ClosePrice).Index(4);
            Map(m => m.DateVolume).Index(5);
        }
    }
if(File.Exists(lastPathName))
{
使用(var reader=newstreamreader(lastPathName))
使用(var csv=新的CsvReader(读卡器))
{
csv.Configuration.HasHeaderRecord=false;
csv.Configuration.RegisterClassMap();
csv.Configuration.ShouldSkipRecord=row=>row[0]>=DateTime.Parse(“2019年12月12日”);
var records=csv.GetRecords();
退货记录;
}
}
公共密封类QuotedataMap:ClassMap
{
公共引证数据库
{
Map(m=>m.QuoteDate)。指数(0);
Map(m=>m.OpenPrice)指数(1);
Map(m=>m.HighPrice)指数(2);
Map(m=>m.LowPrice)指数(3);
Map(m=>m.ClosePrice)指数(4);
地图(m=>m.DateVolume).Index(5);
}
}

那么如何筛选日期范围?>= row变量是字符串数组。因此,在比较之前,必须将字符串转换为DateTime

csv.Configuration.ShouldSkipRecord = row => DateTime.Parse(row[0]) >= DateTime.Parse("12/12/2019");
如果表达式更复杂,可以将其移动到单独的方法

csv.Configuration.ShouldSkipRecord = row => FilterDataRange(row[0]);
这个方法看起来像这样

private bool FilterDataRange(string quoteDateAsString)
{
    var date = DateTime.Parse(quoteDateAsString);
    return date >= new DateTime(2019, 12, 1) && date <= new DateTime(2019, 12, 31);
}
private bool FilterDataRange(string quoteDateAsString)
{
var date=DateTime.Parse(QuoteDataString);

return date>=new DateTime(2019,12,1)&&date行变量是字符串数组。因此,在比较之前,必须将字符串转换为DateTime

csv.Configuration.ShouldSkipRecord = row => DateTime.Parse(row[0]) >= DateTime.Parse("12/12/2019");
如果表达式更复杂,可以将其移动到单独的方法

csv.Configuration.ShouldSkipRecord = row => FilterDataRange(row[0]);
这个方法看起来像这样

private bool FilterDataRange(string quoteDateAsString)
{
    var date = DateTime.Parse(quoteDateAsString);
    return date >= new DateTime(2019, 12, 1) && date <= new DateTime(2019, 12, 31);
}
private bool FilterDataRange(string quoteDateAsString)
{
var date=DateTime.Parse(QuoteDataString);

返回日期>=新的日期时间(2019年12月1日)和日期感谢一个漂亮的示例,我希望它被添加到文档中!感谢一个漂亮的示例,我希望它被添加到文档中!