2009-06-27 36 views

答えて

11

テーブル全体の最大文字列長(、そうでない場合は、Maxは、例外がスローされますが、少なくとも一つの非null値を仮定して):

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

はあなたが列の最大文字列長をしたい場合、あなたが行うことができます(そうでない場合は、各列に少なくとも一つの非null値を仮定し、Maxは、例外がスローされます):C#6で

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

、あなたが追加することによって、例外を防ぐことができます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(); 
関連する問題