2011-09-05 124 views
2

该表只存在于内存中,因此不能执行快速的SQL查询。如何使用RowFilter查找列中最长字符串的长度?

我需要查找数据表的列中最长的字符串。

由于处理表的大小,我不能只做一个原始的逐行大小检查,但必须使用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." 

有什么建议?

UPDATE:

OK,所以我得到了它的工作如下:

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

您可以尝试在这些线路

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

这里C1是您的关注列名,你会得到列中的最大字符串值,您可以轻松找到它的长度。

这适用于非文本列。

对于文本列,你可以去加入这将是LEN(C1)进行评估的附加列(使用新的columm的Expression属性,然后你可以过滤基于MAX

+0

这种不正确的:你有重复我的第一次尝试得到的结果如上所示,它只是返回字母最后一项 – callisto

+0

对不起没有得到你,'Compute'应该返回最长的字符串 – V4Vendetta

+0

你的评论“否则你也可以去添加一个额外的列“是什么使我找到了解决办法,因此对你来说是绿灯。 – callisto

相关问题