8

DataTableオブジェクトがあります。すべての列は文字列型です。

LINQを使用して、すべての列の最大文字列長を取得するにはどうすればよいですか?

4

2 に答える 2

18

テーブル全体の文字列の最大長:

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

列の最大文字列長が必要な場合は、次のようにします。

List<int?> maximumLengthForColumns = 
   Enumerable.Range(0, dataTable.Columns.Count)
       .Select(col => dataTable.AsEnumerable()
            .Select(row => row[col]).OfType<string>()
            .Max(val => val?.Length)
       ).ToList();
于 2009-06-27T20:45:46.327 に答える
2

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();
于 2016-11-22T19:55:41.593 に答える