У меня есть объект DataTable. Каждый столбец имеет строку типа.Как получить максимальную длину строки в каждой колонке Datatable
Использование LINQ, как я могу получить максимальную длину строки для каждого столбца?
У меня есть объект DataTable. Каждый столбец имеет строку типа.Как получить максимальную длину строки в каждой колонке Datatable
Использование LINQ, как я могу получить максимальную длину строки для каждого столбца?
Максимальная длина строки для всей таблицы (предполагается, что по крайней мере одно ненулевое значение там, в противном случае, 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();
с # 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();
Это длина длинной строки во всей таблице. Мне нужны длины самых длинных строк в каждом столбце. –
@ Ronnie: Обновлен ответ. –