2011-09-05 83 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

相關問題