Est le but de l' AsQueryable()
, de sorte que vous pouvez passer autour d'un IEnumerable
pour les méthodes qui pourraient s'attendent IQueryable
, ou est-il utile de raison pour représenter IEnumerable
comme IQueryable
? Par exemple, est-il censé être pour les cas comme cela:
IEnumerable<Order> orders = orderRepo.GetAll();
// I don't want to create another method that works on IEnumerable,
// so I convert it here.
CountOrders(orders.AsQueryable());
public static int CountOrders(IQueryable<Order> ordersQuery)
{
return ordersQuery.Count();
}
Ou faut-il réellement faire quelque chose de différent:
IEnumerable<Order> orders = orderRepo.GetAll();
IQueryable<Order> ordersQuery = orders.AsQueryable();
IEnumerable<Order> filteredOrders = orders.Where(o => o.CustomerId == 3);
IQueryable<Order> filteredOrdersQuery = ordersQuery.Where(o => o.CustomerId == 3);
// Are these executed in a different way?
int result1 = filteredOrders.Count();
int result2 = filteredOrdersQuery.Count();
Faire l' IQueryable
versions de l'extension de ces méthodes que nous venons de construire une Expression qui finit par faire la même chose, une fois exécuté? Ma principale question est, ce qui est un véritable cas d'utilisation pour l'utilisation de AsQueryable
?