Search code examples
c#.netlinqdatatablemax

How to get Max String Length in every Column of a Datatable


I have a DataTable object. Every column is of type string.

Using LINQ, how can I get the maximum string length for every column?


Solution

  • 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();