SORU
28 HAZİRAN 2013, Cuma


AsQueryable amacı nedir()?

Amaçla AsQueryable() çok iletebilirsiniz etrafında bir IEnumerable yöntemleri diye bekliyoruz IQueryable ya da var yararlı bir nedenle temsil IEnumerable IQueryable? Örneğin, bu gibi durumlar için olmalı

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();
}

Ya aslında farklı bir şey yapmak yapar:

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();

Bu uzatma yöntemleri IQueryable sürümleri sadece onun idam sonra aynı şeyi yapıyor biter bir İfade oluşturmak mı? Benim asıl soru, AsQueryable kullanmak için gerçek bir kullanım durumu nedir?

CEVAP
4 Aralık 2013, ÇARŞAMBA


Birkaç ana kullanan var.

  1. Olarak belirtilen diğer cevaplar, kullanabilirsiniz alay sorgulanabilir bir veri kaynağı kullanarak bir bellek içi veri kaynağı, böylece daha kolay test yöntemleri o olacak sonunda kullanılır olmayan sayısız tabanlı IQueryable.

  2. -Bellekte dizileri ya da dış veri kaynakları için de geçerli olabilecek koleksiyonları işlemek için yardımcı yöntemler yazabilirsiniz. Eğer IQueryable tamamen kullanmak için yardım yöntemlerinizi yazarsanız sadece enumerables AsQueryable onları kullanabilirsiniz. Bu çok yaygın yardımcı yöntemler iki ayrı versiyon yazılmasını önlemek için izin verir.

  3. Derleme zamanı IQueryable yerine biraz daha türetilmiş bir tür için sorgulanabilir bir türünü değiştirmek için izin verir. Etkisi; IEnumerable AsEnumerable kullanmak istiyorum aynı zaman IQueryable üzerinde kullanmak istiyorum. IQueryable uygulayan, aynı zamanda Select bir örnek yöntemi olan bir nesne olabilir. Bu durumda olsaydı, ** 20 ETMENİZ yöntemi kullanmak istediğinizde, IQueryable nesne derleme türünü değiştirmek gerekir. Sadece koyun olabilir, ama AsQueryable bir yöntem olmasından tür kesmesi yararlanabilirsiniz. Bu, genel bir bağımsız değişken listesi karmaşık ise sadece daha rahat olduğunu, ve aslındagerekligenel argümanlar varsa anonim türleri.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • PCDIY

    PCDIY

    16 AĞUSTOS 2013
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005