使用Linq从列数据表或默认值获取Max

时间:2014-03-27 20:45:21

标签: c# linq datatable

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

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

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

2 个答案:

答案 0 :(得分:1)

尝试:

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

答案 1 :(得分:0)

简单方法

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