以这个简单的C# LINQ查询为例,想象这db.Numbers
是一个包含一列的SQLNumber
表:
var result =
from n in db.Numbers
where n.Number < 5
select n.Number;
这将在C#中非常有效地运行,因为它会生成类似的SQL查询
select Number from Numbers where Number < 5
它没有做的是从数据库中选择所有数字,然后在C#中过滤它们,就像它最初看起来那样。
Python支持类似的语法:
result = [n.Number for n in Numbers if n.Number < 5]
但是这里的if
子句在客户端而不是服务器端进行过滤,效率要低得多。
Python中是否有与LINQ一样高效的东西?(我目前正在评估Python vs. IronPython vs. Boo,因此适用于任何这些语言的答案都很好。)