我在代码中遇到以下错误:


  “ 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实现;例如dcn.Replace("'","''")(在string.Format的参数中)。

关于c# - 'L'运算符后缺少操作数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38124263/

10-10 17:49