How to get maximum row length in each datatable column

I have a DataTable object. Each column has a row of type.

Using LINQ, how can I get the maximum row length for each column?

+4
source share
2 answers

The maximum row length for the entire table (assuming at least one nonzero value there, otherwise Max throws an exception):

 int maxStringLength = dataTable.AsEnumerable() .SelectMany(row => row.ItemArray.OfType<string>()) .Max(str => str.Length); 

If you need the maximum row length for each column, you can do (assuming at least one nonzero value in each column, otherwise Max will throw an exception):

 List<int> maximumLengthForColumns = Enumerable.Range(0, dataTable.Columns.Count) .Select(col => dataTable.AsEnumerable() .Select(row => row[col]).OfType<string>() .Max(val => val.Length)).ToList(); 
+11
source

With C # 6, you can prevent the exception by adding val? .Length

 var maximumLengthForColumns = Enumerable.Range(0, dt.Columns.Count) .Select(col => dt.AsEnumerable() .Select(row => row[col]).OfType<string>() .Max(val => val?.Length )).ToList(); 
0
source

All Articles