Я пытаюсь переключиться с Linq на лямбда-выражение.
Непонятно, что вы имеете в виду, но лямбда-форма по-прежнему использует LINQ - если вы имеете в виду, что раньше у вас было выражение запроса, стоит знать, что выражения запроса просто преобразуются компилятором в код выражения запроса.
Что касается вашего фактического запроса, вы должны избавиться от вызова AsEnumerable()
, так как в противном случае вы будете выполнять все после этого в своем процессе .NET, а не запрашивать это у базы данных. Так просто:
var count = _db.myTable
.Where(i => i.DATE.HasValue && i.DATE == DateFrom)
.Select(x => x.myTable_ID)
.Distinct()
.Count();
Убедившись, что это все еще работает, вы должны проверить сгенерированный SQL - в основном он должен выполнять все подсчеты в базе данных.
Вы также должны увидеть, действительно ли вам нужна проверка i.DATE.HasValue
- я подозреваю, что нет, поскольку, если DateFrom
не может быть нулевым, он все равно будет соответствовать только ненулевым значениям DATE
.
person
Jon Skeet
schedule
08.07.2014
AsEnumerable()
?) - person Jon Skeet   schedule 08.07.2014