Возьмите этот простой C # LINQ запрос и представьте, что db.Numbers
- это SQL таблица с одним столбцом Number
:
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
здесь выполняет фильтрацию на стороне клиента, а не на стороне сервера, что гораздо менее эффективно.
Есть ли что-то столь же эффективное, как LINQ в Python ? (В настоящее время я оцениваю Python против IronPython против Boo , поэтому ответ, который работает на любом из этих языков, подойдет.)