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();
source share