私はDataTableオブジェクトを持っています。すべての列は文字列です。Datatableの各列で最大文字列長を取得する方法
LINQを使用すると、どのようにして各列の最大文字列長を取得できますか?
私はDataTableオブジェクトを持っています。すべての列は文字列です。Datatableの各列で最大文字列長を取得する方法
LINQを使用すると、どのようにして各列の最大文字列長を取得できますか?
テーブル全体の最大文字列長(、そうでない場合は、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();
、あなたが追加することによって、例外を防ぐことができます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();
これは、テーブル全体で最も長い文字列の長さを取得します。 すべての列で最も長い文字列の長さが必要です。 –
@Ronnie:答えを更新しました。 –