2016-06-30 68 views
1

我收到以下錯誤在我的代碼:缺少操作數「L」運算符

後「L」運算符缺少操作數。

我調試的代碼,發現它是發生在下面一行:

DataRow[] documents = this.DataSet.Results_Documents.Select(String.Format("DocumentControlNumber = '{0}'", dcn), null, DataViewRowState.CurrentRows); 

這裏的時候,DCN包含'在其滿弦它正在發生。

這是什麼原因?

例如:DCN: - 謝爾頓

+0

'dcn'的示例值? –

+0

爲什麼文檔_數字包含一個撇號?你需要用兩個單引號替換單引號才能逃脫它? –

回答

6

這裏的時候,DCN包含'在其滿弦它正在發生。

是的;使用串聯的常見問題;讓我們使用您提問中的示例dcn作爲Nat'l Bk of Sheldon;現在的查詢是:

DocumentControlNumber = 'Nat'l Bk of Sheldon' 

這是畸形的。由於這不允許正確的參數化,所以您需要「轉義」該值;如果我猜的話,到之一:

DocumentControlNumber = 'Nat''l Bk of Sheldon' 

DocumentControlNumber = 'Nat\'l Bk of Sheldon' 

(指出\ñC#需求逃逸,或使用逐字字符串的)

無論是應該可以通過string.Replace來實現;例如dcn.Replace("'","''")(在參數string.Format中)。

+0

感謝它幫助:) – Neel

2

Select的Nat'l BK要求的字符串是在一個特定的格式,當你有一個'字符串不再有效。您需要通過repacing每'''

DataRow[] documents = this.DataSet.Results_Documents.Select(
          String.Format("DocumentControlNumber = '{0}'" 
             , dcn.ToString().Replace("'", "''") 
          ), null, DataViewRowState.CurrentRows); 

轉義引號如果dcnstring你不需要.ToString()

+0

感謝它幫助:) – Neel