【问题标题】:Minimum and maximum data form Data Table最小和最大数据表格数据表
【发布时间】:2015-05-19 23:18:32
【问题描述】:

我有四列数据表:DateisinPriceState
我需要从Date 列中获取最小和最大日期。
我正在使用此代码,它适用于一个文件,但是对于另一个文件,它显示我错误的最大日期。

 DateTime stDate = Convert.ToDateTime((excleTable.Compute("min(date)", string.Empty)));
 DateTime eDate = Convert.ToDateTime((excleTable.Compute("max(date)", string.Empty)));

例如,在第一行我有02/27/2015,在最后一行我有03/31/2015,但它只能读取到03/09/2015,这是不正确的。
有什么想法我该怎么办?

【问题讨论】:

  • 您的专栏的DataType 是什么?看起来是 string 而不是 DateTime
  • 是它的字符串数据类型

标签: c# datatable


【解决方案1】:

您的列类型似乎不是DateTime。如果您可以解决此问题,请确保您的 DataTabledate 具有 DateTime 类型,否则您可以使用 LINQ 的 MaxMin 并将您的列转换为 DateTime,例如:

DateTime stDate =  dt.AsEnumerable()
                     .Max(r => Convert.ToDateTime(r.Field<string>("date")));

DateTime eDate =  dt.AsEnumerable()
                     .Min(r => Convert.ToDateTime(r.Field<string>("date")));

如果您的字符串值与默认/可用的DateTime 格式不对应,您可能必须使用DateTime.ParseExact 转换为DateTime,例如:

DateTime stDate =  dt.AsEnumerable()
    .Max(r => DateTime.ParseExact(r.Field<string>("date"), 
                                    "MM/dd/yyyy", 
                                    CultureInfo.InvariantCulture)); 

【讨论】:

  • 在我的情况下工作我想知道为什么我的两行代码不能以任何方式处理一个文件谢谢
  • @Tahir,对于字符串类型,它将使用自然排序顺序,而不是您期望的 DateTime 排序顺序。
猜你喜欢
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2011-01-27
相关资源
最近更新 更多