[英]Missing operand after 'L' operator
我在代碼中遇到以下錯誤:
“ L”運算符后缺少操作數。
我調試了代碼,發現它發生在下面的行中:
DataRow[] documents = this.DataSet.Results_Documents.Select(String.Format("DocumentControlNumber = '{0}'", dcn), null, DataViewRowState.CurrentRows);
當dcn的完整字符串中包含'
時,就會發生這種情況。
確切原因是什么?
例如:dcn:-Sheldon的Nat'l Bk
當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'
(請注意, \\
n C# 也需要轉義,或使用逐字字符串文字)
string.Replace
都可以通過string.Replace
實現。 例如dcn.Replace("'","''")
(在string.Format
的參數中)。
如果您輸入'
,則Select
要求字符串采用特定格式,該字符串不再有效。 您需要通過在每個'
前面加上''
來對引號進行轉義
DataRow[] documents = this.DataSet.Results_Documents.Select(
String.Format("DocumentControlNumber = '{0}'"
, dcn.ToString().Replace("'", "''")
), null, DataViewRowState.CurrentRows);
如果dcn
是string
,則不需要.ToString()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.