c# - 从数据集中的 X 表中获取最大日期值

标签 c# linq datatable

我有一个包含 1-3 个表的数据集,每个表都有一个名为 m_date(字符串)的列 我想使用 LINQ 从所有人那里获得最大值(value)。

我知道如何获取每个表的最大值:

var maxDate=ds.Tables[index].AsEnumerable()
              .Max(x=>DateTime.Parse(x["m_date"].ToString())).ToString();

但我不知道如何从所有表信息中获取最大值

编辑:

我现在有这样的东西可以工作:

DateTime maxDate=DateTime.MinValue;

foreach  (DataTable tbl in ds.Tables)
{
     DateTime maxDateCur=ds.Tables[index].AsEnumerable()
                  .Max(x=>DateTime.Parse(x["m_date"].ToString()));
     maxDate=new DateTime[] {maxDateCur,maxDate}.Max();
}

但我觉得它可以做得更好。

最佳答案

你可以这样做:

var maxDate = Enumerable.Range(0, ds.Tables.Count)
        .SelectMany(index => ds.Tables[index].AsEnumerable())
        .Max(dataRow => dataRow.Field<DateTime>("m_date"))
        .ToString();
  • 使用 Enumerable.Range生成索引,使我们能够访问每个人 DataTable .
  • 使用 SelectMany得到一个IEnumerable<DataRow>
  • 使用 Max获取最大值并将其转换为字符串。

略有不同的变体是:

var maxDate = Enumerable.Range(0, ds.Tables.Count)
                .Select(index =>
                    ds.Tables[index].AsEnumerable()
                        .Max(dataRow => dataRow.Field<DateTime>("m_date")))
                .Max().ToString();
  • 使用 Enumerable.Range生成索引,使我们能够访问每个人 DataTable .
  • 使用 Select得到一个IEnumerable<DateTime>由最大 DateTime 组成每个 DataTable
  • 使用 Max获取 DateTime 的最大值,然后转换为字符串表示形式。

关于c# - 从数据集中的 X 表中获取最大日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53942882/

相关文章:

c# - 如何知道哪些程序集依赖于 system.web.mvc?

c# - 是否应处置 UdpClient?

javascript - 如何使用 Datatable jquery 在同一个表中搜索单个列(文本输入,选择下拉列表)?

c# - 在 ASP.NET WebApi 2 中自定义不记名 token JSON 结果

c# - 用其总和替换集合中的重复值

c# - 未定义表达式参数

c# - 无法将整数类型隐式转换为 bool 值

c# - Enumerable.Range 中的 A 到 Z 字符列表

javascript - 格式化 JSON 日期时间

c# - 从包含树状数据的 DataTable 或 List 填充 TreeView