2014-03-27 39 views
2

我有一個linq查詢查看數據表列並獲得該字段中的最大值,我遇到了一個錯誤,當數據表沒有行查詢時拋出異常。我想知道是否可以通過添加一個DefaultIfEmpty來處理這個secnario,但是不知道如何使用它。這是工作LINQ查詢:從列數據表中獲取最大值或默認值使用Linq

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

這得到該列的最大價值,如何處理返回0,如果有在數據表中沒有行通過使用DefaultifEmpty如果可能的話

回答

1

嘗試:

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

簡單方法

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

dataTable.AsEnumerable()任何()的錯誤了BEC我dt.Rows.Count爲0 – AC25

+0

No. Any()檢查集合中的任何項目。你比較了dataTable null嗎? – Kris

相關問題