2009-06-27 39 views

回答

11

整个表中的最大字符串长度(假定至少一个非空值存在,否则,Max会抛出异常):

int maxStringLength = dataTable.AsEnumerable() 
           .SelectMany(row => row.ItemArray.OfType<string>()) 
           .Max(str => str.Length); 

如果你想最大字符串长度为每个列,你可以做(​​在每列假设至少一个非空值,否则,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(); 
+0

获得整个表中最长字符串的长度。 我需要每列中最长字符串的长度。 – 2009-06-27 20:56:43

0

用c#6,您可以通过添加防止异常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(); 
相关问题