这是lambda吗?如果不是什么?

时间:2015-01-13 20:41:43

标签: delphi orm devart

几天前我正在尝试从Devart开始使用名为EntityDAC的delphi的新ORM,我正在阅读特定于LINQ部分的文档,当我看到类似的内容时:

Linq.From(Emp).Where(Emp['Sal'] > 1000)

得说,在我看到的第一刻唤醒我。表达" Emp [' Sal']> 1000"不是lambda表达式?!由于试用版是这个组件没有来源,我无法弄清楚函数/程序的声明方式。

参考:http://www.devart.com/entitydac/docs/ - > Linq查询 - > Linq语法 - >向下滚动到Where会话

1 个答案:

答案 0 :(得分:12)

I mentioned this in a blog post a few months ago.我没有资源来看待,但几乎可以肯定这样做:

  • 表达式Emp['Sal']返回record类型
  • 的值
  • 此记录在其上声明了运算符重载
  • Delphi语言将操作符重载定义为函数,并不要求它们返回任何指定或直观的类型。因此,这里的>运算符不返回布尔值,而是返回另一个记录。
  • 通过链接这些运算符,可以创建一个表达式树,可以通过它们的LINQ求值程序进行评估。