如何在数据表的每个列中获取最大字符串长度

Ron*_*rby 6 .net c# linq datatable max

我有一个DataTable对象.每列都是string类型.

使用LINQ,如何获得每列的最大字符串长度?

Meh*_*ari 14

整个表的最大字符串长度(假设其中至少有一个非空值,否则Max将抛出异常):

int maxStringLength = dataTable.AsEnumerable()
                              .SelectMany(row => row.ItemArray.OfType<string>())
                              .Max(str => str.Length);
Run Code Online (Sandbox Code Playgroud)

如果你想要列的最大字符串长度,你可以这样做(假设列中至少有一个非空值,否则Max会引发异常):

List<int> maximumLengthForColumns = 
   Enumerable.Range(0, dataTable.Columns.Count)
             .Select(col => dataTable.AsEnumerable()
                                     .Select(row => row[col]).OfType<string>()
                                     .Max(val => val.Length)).ToList();
Run Code Online (Sandbox Code Playgroud)