怎样从datatable中筛选某年的数据

时间:2022-04-06 02:59:34
datatable日期字段格式不确定,有可能是yyyy-MM-dd,还有可能是yyyy/MM/dd,怎样查询该字段是某年的数据呢?

19 个解决方案

#1


datatable有个select方法,给个网址: http://blog.csdn.net/maonongwu/article/details/6308922
至于时间格式的问题应该好解决,不过统一一下好一点

#2


查询属于哪一年,截取年部分不就行了

#3


引用 1 楼 cqjiyong 的回复:
datatable有个select方法,给个网址:http://blog.csdn.net/maonongwu/article/details/6308922
至于时间格式的问题应该好解决,不过统一一下好一点

答非所问了,不好意思。没看清楚

#4


只要是正确的时间,那么均可以强制转换成DateTime类型,然后取年份就可以

#5



//取2011.12.31号的数据
            var data = from dt in datatable.AsEnumerable()
                     where Convert.ToDateTime(dt.Field<string>("dj_date")).ToString("yyyy.MM.dd") == "2011.12.31"
                     select dt;

#6


datatable日期字段获取的是字符串吧 你用convert 先转成日期datetime 然后再某日期比较

#7


DateTime newDate=Convert.ToDateTime(datatable.rows[0]["riqi"]);
之后按 newDate.year 方法得到年份就可以了。

#8


引用 4 楼 return_false 的回复:
只要是正确的时间,那么均可以强制转换成DateTime类型,然后取年份就可以


我是想在dataTable里的select方法中查询,能在条件中转换类型么?

#9



            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;

#10


引用 9 楼 wnyxy 的回复:
C# code

            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;


这个返回的类型可以转换为DataRow[]么,另外,datatable中的日期就是日期时间类型的

#11



//方案已验证
//Data为你日期的字段名称

string expression=string.Format("Date like '%{0}%'",2010);
DataRows[] rows=dt.Select(expression);


#12


引用 11 楼 zerokiseki 的回复:
C# code


//方案已验证
//Data为你日期的字段名称

string expression=string.Format("Date like '%{0}%'",2010);
DataRows[] rows=dt.Select(expression);

这个我觉得行

#13


引用 9 楼 wnyxy 的回复:
C# code

            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;

var data = from dt in datatable.AsEnumerable()
where dt.Field<DateTime>("dj_date").Year ==2011
select dt;

#14


引用 9 楼 wnyxy 的回复:
C# code

            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;


data是什么类型,可以转换为datarow[]么?

#15


该回复于2011-12-31 11:36:04被版主删除

#16


引用楼主 ahking 的回复:
▪ 英特尔有哪些技术可以提升虚拟...▪ 虚拟机管理器(VMM)有哪些,它...▪ 数据中心网络如何获得云智能?▪ 房地产行业的CIO们是如何看待云...▪ 普通网民身边有哪些云服务?
datatable日期字段格式不确定,有可能是yyyy-MM-dd,还有可能是yyyy/MM/dd,怎样查询该字段是某年的数据呢?

把你的数据表转化为DataView,然后用它的Rowfilter属性指定你的条件,类似写Sql中where语句后面的东东(貌似这里不支持between……and),直接用“>”,"<"这些东西解决吧

前提是你存日期的那一列是DateTime类型的,如果不是 转一下

#17


完全可以解决你的问题:


DataRows[] rows=(from dt in datatable.AsEnumerable()
where dt.Field<DateTime>("date").Year ==2011
select dt).ToArray();

#18


引用 14 楼 ahking 的回复:
引用 9 楼 wnyxy 的回复:

C# code

var data = from dt in datatable.AsEnumerable()
where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
select dt;


data是什么类型,可以转换为datarow[]么?

是datarow collection
之间可以这样使用
foreach(DataRow dr in data)
{
   string aa=dr["123"].ToString();
}

#19


like是个不错的选择,要不然就强制转换为统一的日期格式

#1


datatable有个select方法,给个网址: http://blog.csdn.net/maonongwu/article/details/6308922
至于时间格式的问题应该好解决,不过统一一下好一点

#2


查询属于哪一年,截取年部分不就行了

#3


引用 1 楼 cqjiyong 的回复:
datatable有个select方法,给个网址:http://blog.csdn.net/maonongwu/article/details/6308922
至于时间格式的问题应该好解决,不过统一一下好一点

答非所问了,不好意思。没看清楚

#4


只要是正确的时间,那么均可以强制转换成DateTime类型,然后取年份就可以

#5



//取2011.12.31号的数据
            var data = from dt in datatable.AsEnumerable()
                     where Convert.ToDateTime(dt.Field<string>("dj_date")).ToString("yyyy.MM.dd") == "2011.12.31"
                     select dt;

#6


datatable日期字段获取的是字符串吧 你用convert 先转成日期datetime 然后再某日期比较

#7


DateTime newDate=Convert.ToDateTime(datatable.rows[0]["riqi"]);
之后按 newDate.year 方法得到年份就可以了。

#8


引用 4 楼 return_false 的回复:
只要是正确的时间,那么均可以强制转换成DateTime类型,然后取年份就可以


我是想在dataTable里的select方法中查询,能在条件中转换类型么?

#9



            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;

#10


引用 9 楼 wnyxy 的回复:
C# code

            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;


这个返回的类型可以转换为DataRow[]么,另外,datatable中的日期就是日期时间类型的

#11



//方案已验证
//Data为你日期的字段名称

string expression=string.Format("Date like '%{0}%'",2010);
DataRows[] rows=dt.Select(expression);


#12


引用 11 楼 zerokiseki 的回复:
C# code


//方案已验证
//Data为你日期的字段名称

string expression=string.Format("Date like '%{0}%'",2010);
DataRows[] rows=dt.Select(expression);

这个我觉得行

#13


引用 9 楼 wnyxy 的回复:
C# code

            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;

var data = from dt in datatable.AsEnumerable()
where dt.Field<DateTime>("dj_date").Year ==2011
select dt;

#14


引用 9 楼 wnyxy 的回复:
C# code

            var data = from dt in datatable.AsEnumerable()
                       where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
                       select dt;


data是什么类型,可以转换为datarow[]么?

#15


该回复于2011-12-31 11:36:04被版主删除

#16


引用楼主 ahking 的回复:
▪ 英特尔有哪些技术可以提升虚拟...▪ 虚拟机管理器(VMM)有哪些,它...▪ 数据中心网络如何获得云智能?▪ 房地产行业的CIO们是如何看待云...▪ 普通网民身边有哪些云服务?
datatable日期字段格式不确定,有可能是yyyy-MM-dd,还有可能是yyyy/MM/dd,怎样查询该字段是某年的数据呢?

把你的数据表转化为DataView,然后用它的Rowfilter属性指定你的条件,类似写Sql中where语句后面的东东(貌似这里不支持between……and),直接用“>”,"<"这些东西解决吧

前提是你存日期的那一列是DateTime类型的,如果不是 转一下

#17


完全可以解决你的问题:


DataRows[] rows=(from dt in datatable.AsEnumerable()
where dt.Field<DateTime>("date").Year ==2011
select dt).ToArray();

#18


引用 14 楼 ahking 的回复:
引用 9 楼 wnyxy 的回复:

C# code

var data = from dt in datatable.AsEnumerable()
where Convert.ToDateTime(dt.Field<string>("dj_date")).Year ==2011
select dt;


data是什么类型,可以转换为datarow[]么?

是datarow collection
之间可以这样使用
foreach(DataRow dr in data)
{
   string aa=dr["123"].ToString();
}

#19


like是个不错的选择,要不然就强制转换为统一的日期格式

#20