Linq to entities - Lambda - 连接字符串

时间:2012-05-04 08:03:21

标签: c# lambda linq-to-entities

我想使用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));

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

Linq to Entities不了解所有.NET框架方法。

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

这样的事情:

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

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

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

相关问题