I have a DataTable object. Every column is of type string.
Using LINQ, how can I get the maximum string length for every column?
The maximum string length for the whole table:
int? maxStringLength = dataTable.AsEnumerable()
.SelectMany(row => row.ItemArray.OfType<string>())
.Max(str => str?.Length);
If you want maximum string length for each column, you could do:
List<int?> maximumLengthForColumns =
Enumerable.Range(0, dataTable.Columns.Count)
.Select(col => dataTable.AsEnumerable()
.Select(row => row[col]).OfType<string>()
.Max(val => val?.Length)
).ToList();
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();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With