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

前端 未结 2 922
日久生厌
日久生厌 2020-12-16 06:07

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

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

相关标签:
2条回答
  • 2020-12-16 06:48

    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 讨论(0)
  • 2020-12-16 06:49

    The maximum string length for the whole table (assuming at least one non-null value there, otherwise, Max will throw an exception):

    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 (assuming at least one non-null 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();
    
    0 讨论(0)
提交回复
热议问题