usuario procesando por matematicas fórmulas funciones expresiones evaluar dinámicamente creadas c# .net linq datatable max

c# - procesando - funciones field calculator arcgis



Cómo obtener la longitud máxima de cadena en cada columna de una tabla de datos (2)

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?


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

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

Si desea la longitud máxima de cadena para cada columna, podría hacerlo (asumiendo al menos un valor no nulo en cada columna, de lo contrario, Max emitirá 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();


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();