¿Cómo uso RowFilter para encontrar la longitud de la cadena más larga en una columna?

StackOverflow https://stackoverflow.com/questions/7305606

  •  25-10-2019
  •  | 
  •  

Pregunta

Esta tabla solo existe en la memoria, por lo que no puedo hacer una consulta SQL rápida.

Necesito encontrar la cadena más larga en una columna de un datos.

Debido al tamaño de las tablas procesadas, no puedo hacer una verificación de tamaño de fila por fila sin procesar, sino que tengo que usar RowFilter.

He probado estos:

 dv.RowFilter = "[" + colName + "] = MAX([" + colName + "])"//incorrect results

y

dv.RowFilter = "[" + colName + "] = MAX(LEN([" + colName + "]))" // Gives error "Expecting a single column argument with possible 'Child' qualifier."

y

dv.RowFilter = "MAX(LEN([" + colName + "]))" // Gives error "Expecting a single column argument with possible 'Child' qualifier."

¿Alguna sugerencia?

ACTUALIZAR:

Ok, lo conseguí trabajando con lo siguiente:

dataView.RowFilter = "[fieldsize_" + colName + "] = MAX([fieldsize_" + colName + "])"; //add column for size
dataTableSize = dataView.ToTable();

string strMaxValue = dataTableSize.Rows[0][column.ColumnName].ToString();
int colSize =  strMaxValue.Length;
¿Fue útil?

Solución

¿Puedes probar estas líneas?

string maxstring = (string)dt.Compute("MAX(C1)","ISNULL(C1,'') <> ''");

Aquí C1 es su nombre de columna preocupado y obtendrá el valor de cadena máxima en la columna y puede encontrar fácilmente la longitud a partir de él.

Esto funciona para columnas sin texto.

Para columnas de texto, puede agregar una columna adicional que se evaluaría como LEN(C1) (usando Expression propiedad del nuevo columm y luego puede filtrar en función de MAX

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top