Хотя оба являются технически правильными, так как в обоих случаях они дают одинаковый результат в упрощенной форме, это происходит только потому, что стандартное поведение db.table
- «Выбрать». За кулисами они разные. В то время как один System.Data.Linq.Table
, другой System.Linq.IQuerable
.
Например
var x = db.table ; var y= db.table(s=>s);
X = y;
приведет к ошибке компилятора.
При использовании библиотеки Dynamic Linq, в случаях, когда вам нужно создавать динамические запросы во время выполнения, вы должны использовать IQuerable
в качестве начального выбора. Что означает var qry = db.table(s=>s);
в отличие от var qry = db.table;
Затем вы можете продолжить и связать ваши запросы, как: qry = qry.Where(bla bla bla);
Обнаружил это нелегко после нескольких сессий гвоздя.