Вы можете значительно упростить запрос:
using (var ctx = new GPEntities())
{
return ctx.Tracking
.Where(c => c.clientID == Config.ClientID)
.Where(c => c.custID == id)
.Where(c => c.oOrderNum.HasValue)
.Count();
}
При вызове ToList
это вызовет материализацию, поэтому запрос будет отправлен в базу данных, и будут извлечены все столбцы.Фактический счетчик произойдет на клиенте.
Если вы просто наберете Count
, без ToList
он выдаст запрос при вызове Count
, и сервер вернет только один номер вместо таблицы.
Это не так критично для производительности, но я думаю, что код выглядел бы немного неплохо без стольких Where
:
using (var ctx = new GPEntities())
{
return ctx.Tracking
.Where(c =>
c.clientID == Config.ClientID &&
c.custID == id &&
c.oOrderNum.HasValue)
.Count();
}
или даже
using (var ctx = new GPEntities())
{
return ctx.Tracking
.Count(c =>
c.clientID == Config.ClientID &&
c.custID == id &&
c.oOrderNum.HasValue);
}