得到錯誤在獲取數據從DataTable的選擇方法,我用下面的代碼使用「贊」操作
foreach (KeyValuePair<string, string> kvp in letGrdSignList)
{
//Check if added function in definition is modified, if yes then don't add it in signature list
DataRow[] dLetRow = dtLet.Select("Definition" + "Like"" + "'" +
"%"+ kvp.Value + "%" + "'");
//kvp.value contains "local:try2values($arg1 as xs:decimal,$arg2 as xs:float*)"
//Above line results in error
if (dLetRow.Length > 0)
{
//Check if signature already exists
if (!strList.ContainsKey(kvp.Key))
strList.Add(kvp.Key, kvp.Value);
}
//else
// //Remove from list if signature is not present in any defination column
// letGrdSignList.Remove(sLetSignature);ss
}
I am getting following error
{System.Data.EvaluateException: Error in Like operator: the string pattern '%local:try2values($arg1 as xs:decimal,$arg2 as xs:float*)%' is invalid.
at System.Data.LikeNode.AnalyzePattern(String pat)
at System.Data.LikeNode.Eval(DataRow row, DataRowVersion version)
at System.Data.Select.AcceptRecord(Int32 record)
at System.Data.Select.GetLinearFilteredRows(Range range)
at System.Data.Select.SelectRows()
at System.Data.DataTable.Select(String filterExpression)
at WPFApp.QueryGenerator.GetSignatureList()
的代碼截圖
從MSDN如果發現這個 通配符
無論是*和%可以在LIKE比較中互換使用通配符。如果LIKE子句中的字符串包含*或%,則應將這些字符括在括號([])中。如果括號中有括號,則每個括號字符應該括在括號內(例如[[]或[]])。通配符在模式的開始和結束處,模式的結尾或模式的開始處都是允許的。例如:
「ITEMNAME LIKE '產品'」
「ITEMNAME LIKE '*產品'」
「ITEMNAME LIKE '產品*'」
通配符不允許一個字符串的中間。例如,'te * xt'是不允許的。
嘿感謝的人,我也做了類似的事情,代碼運行良好,我只是想確定這種方法是否正確 – Abhi 2012-01-06 06:43:43
對不起,沒有工作 – Abhi 2012-01-06 06:54:51