【问题标题】:Get Max from column datatable or Default Value using Linq使用 Linq 从列数据表或默认值中获取最大值
【发布时间】:2014-03-27 20:45:21
【问题描述】:

我有一个 linq 查询,它查看数据表列并获取该字段中的最大值,我遇到了一个错误,当数据表没有行时,查询会引发异常。我想知道我是否可以通过放置 DefaultIfEmpty 来处理这种情况,但只是不知道如何使用它。这是有效的 linq 查询:

Datatable.AsEnumerable().Max(x => Convert.ToInt32(x.Field<string>(Framework.SomeStringField)))

这将获取该列的最大值,如果可能的话,如果数据表中没有行,我如何使用 DefaultifEmpty 处理返回 0

【问题讨论】:

    标签: c# linq datatable


    【解决方案1】:

    试试:

    Datatable.AsEnumerable()
             .Select(x => Convert.ToInt32(x.Field<string>(Framework.SomeStringField)))
             .DefaultIfEmpty(0)
             .Max(x => x);
    

    【讨论】:

      【解决方案2】:

      简单的方法

      int max = dataTable.AsEnumerable().Any() ? dataTable.AsEnumerable().Max(x => Convert.ToInt32(x.Field<string>(Framework.SomeStringField))): 0
      

      【讨论】:

      • dataTable.AsEnumerable().Any() 错误因为我有 dt.Rows.Count 是 0
      • 没有。 Any() 检查集合中的任何项目。你比较过dataTable null
      猜你喜欢
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多