2009-06-27 5 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

Это длина длинной строки во всей таблице. Мне нужны длины самых длинных строк в каждом столбце. –

+0

@ Ronnie: Обновлен ответ. –

0

с # 6, вы можете предотвратить исключение путем добавления val?. Длина

var maximumLengthForColumns = 
       Enumerable.Range(0, dt.Columns.Count) 
       .Select(col => dt.AsEnumerable() 
            .Select(row => row[col]).OfType<string>() 
            .Max(val => val?.Length)).ToList(); 
Смежные вопросы