datatable日期字段格式不确定,有可能是yyyy-MM-dd,还有可能是yyyy/MM/dd,怎样查询该字段是某年的数据呢?

解决方案 »

  1.   

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

  2.   

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

  3.   


    //取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;
      

  4.   

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

  5.   

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

  6.   


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

  7.   


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

  8.   


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

  9.   


    //方案已验证
    //Data为你日期的字段名称string expression=string.Format("Date like '%{0}%'",2010);
    DataRows[] rows=dt.Select(expression);
      

  10.   

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

  11.   


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

  12.   

    把你的数据表转化为DataView,然后用它的Rowfilter属性指定你的条件,类似写Sql中where语句后面的东东(貌似这里不支持between……and),直接用“>”,"<"这些东西解决吧前提是你存日期的那一列是DateTime类型的,如果不是 转一下
      

  13.   

    完全可以解决你的问题:
    DataRows[] rows=(from dt in datatable.AsEnumerable()
    where dt.Field<DateTime>("date").Year ==2011
    select dt).ToArray();
      

  14.   

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

  15.   

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