如何使用RowFilter查找列中最长字符串的长度?

时间:2011-09-05 08:33:53

标签: c# datatable rowfilter

此表仅存在于内存中,因此无法进行快速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 个答案:

答案 0 :(得分:1)

你可以尝试这些行

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

此处C1是您关注的列名,您可以在列中获得最大字符串值,您可以轻松找到它的长度。

这适用于非文本列。

对于文字列,您可以添加一个额外的列,该列将被评估为LEN(C1)(使用新列的Expression属性,然后您可以基于过滤在MAX