Pregunta Cómo obtener la longitud máxima de cadena en cada columna de un datatable


Tengo un objeto DataTable. Cada columna es de tipo cadena.

Usando LINQ, ¿cómo puedo obtener la longitud máxima de cadena para cada columna?


5
2018-06-27 20:35


origen


Respuestas:


La longitud máxima de cadena para toda la tabla (asumiendo que al menos un valor no nulo allí, de lo contrario, Max lanzará una excepción):

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

Si quieres longitud máxima de cadena para cada columna, podría hacer (asumiendo al menos un valor no nulo en cada columna, de lo contrario, Max lanzará una excepción):

List<int> maximumLengthForColumns = 
   Enumerable.Range(0, dataTable.Columns.Count)
             .Select(col => dataTable.AsEnumerable()
                                     .Select(row => row[col]).OfType<string>()
                                     .Max(val => val.Length)).ToList();

12
2018-06-27 20:45



Con c # 6, puede evitar la excepción agregando 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();

0
2017-11-22 19:55