0

我想使用 lambda 连接一个字符串,以将该连接值与某个条件进行比较。

Invoices = Invoices.Where(f => ((string)f.invoice_prefix + String.Format("{0:0000}", Convert.ToInt32(f.invoice_number))).ToLower().Equals(condition7));

但我收到一条错误消息:

当前上下文中不存在名称“f”

尝试了几个 String.Format 和 String.Concat 变体,例如

Invoices = Invoices.Where(f => (String.Format("{0}{1}",f.invoice_prefix,String.Format("{0:0000}", Convert.ToInt32(f.invoice_number)))).ToLower().Equals(condition7));

但没有成功......有人可以帮我语法吗?

提前致谢!

4

1 回答 1

2

Linq to Entities 并不理解所有的 .NET 框架方法。

为了在数据库上将其作为 SQL 语句运行,您只需要使用可以转换为 SQL 的运算符。这意味着您需要使用原始数据类型重新编写谓词。

所以是这样的:

string prefixCondition = ...
int invoiceNumberCondition = ...

Invoices.Where( f =>
  f.invoice_prefix == prefixCondition
  &&
  f.invoice_number == invoiceNumberCondition 
)

我建议使用LinqPad进行测试,因为它会显示生成的 SQL 语句。

于 2012-05-04T08:14:09.253 回答