I am currently using the following method to get a page of customers as well as the total count. The only problem is that I am making 2 database trips - one for getting the total count and the other for getting the actual rows for the page.
My question is: Can I combine the totalcount query with the actual rows query so Entity Framework sends both the queries in a single database trip?
public IList GetPageOfCustomers(string name, int skipCount,
int pageSize, out int totalCount) {
using(CustomerEntities e = new CustomerEntities()) {
//FIRST QUERY
var query = (from c in e.Customers
where c.NAME.Contains(name)
select new {
c.CustomerID, c.NAME, c.CITY, c.STATE, c.COUNTRY
})
.Distinct()
.OrderBy(s = > s.NAME)
.ThenBy(s = > s.CITY)
.ThenBy(s = > s.CustomerID);
//SECOND QUERY ( executed in a separate database trip)
int totalCount = (from c in e.Customers
where c.NAME.Contains(name)
select new {
c.CustomerID, c.NAME, c.CITY, c.STATE, c.COUNTRY
})
.Distinct()
.Count();
return query.Skip(skipCount).Take(pageSize).ToList();
}//END of USING
}//END of METHOD
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…