Как я могу использовать RowFilter, чтобы найти длину самой длинной строки в столбце? - PullRequest
2 голосов
/ 05 сентября 2011

Эта таблица существует только в памяти, поэтому не может выполнить быстрый запрос SQL.

Мне нужно найти самую длинную строку в столбце таблицы данных.

Из-за размера обрабатываемых таблиц я не могу просто выполнить необработанную проверку размера строки за строкой, но должен использовать RowFilter.

Я пробовал это:

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

и

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

и

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

Есть какие-нибудь предложения?

ОБНОВЛЕНИЕ:

ОК, Итак, у меня все работаетсо следующим:

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;

1 Ответ

1 голос
/ 05 сентября 2011

Можете ли вы примерить эти строки

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

здесь C1 - ваше имя столбца, о котором вы беспокоитесь, и вы получите максимальное значение строки в столбце, и вы можете легко найти его длину.

Это работает для нетекстовых столбцов.

Для текстовых столбцов вы можете добавить дополнительный столбец, который будет оцениваться как LEN(C1) (используя Expression свойство нового столбца, а затем вы можете фильтровать на основе MAX

...