我想使用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));
但没有成功......有人可以帮我解释语法吗?
提前致谢!
答案 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语句。