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