我有一个linq查询,它查看数据表列并获取该字段中的最大值,我遇到了一个错误,当数据表没有行时,查询会抛出异常。我想知道我是否可以通过放置DefaultIfEmpty来处理这个secnario,但只是不知道如何使用它。这是有效的linq查询:
Datatable.AsEnumerable().Max(x => Convert.ToInt32(x.Field<string>(Framework.SomeStringField)))
这获取该列的最大值,如果可能的话,如果数据表中没有行,如果可能的话,如何处理返回0
答案 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