Sık sık özel koleksiyon nesnesiyle çalışırken linq'un sorunlu olduğunu görüyorum. GenellikleÖzel taban koleksiyonuna sahip Linq
abstract class BaseCollection<T> : List<T> { ... }
koleksiyonları
class PruductCollection : BaseCollection<Product> { ... }
olarak tanımlanır taban toplama AddRange daha bu koleksiyona bir linq anlatı sonuçlarını eklemek için daha iyi bir yolu var mı olarak defened edilir veya concat?
var products = from p in HugeProductCollection
where p.Vendor = currentVendor
select p;
PruductCollection objVendorProducts = new PruductCollection();
objVendorProducts.AddRange(products);
Nesne döndürdüğü nesne özel koleksiyonumun tipini oluşturduysa, bu hoş olurdu. Bunu yapmak için koleksiyonu iki kez numaralandırmanız gerektiği gibi.
EDIT: Yanıtları okuduktan sonra en iyi çözümün bir ToProduct() uzantısının uygulanması olduğunu düşünüyorum. C# 4.0'daki kovaryans/kontravaryans, bu tür problemleri çözmede yardımcı olur.
- Çoğu linq sorguları tembel olarak değerlendirildiğinden, koleksiyon sadece AddRange çağrısı sırasında bir kez numaralandırılacaktır. –
Bu, sorunumu çözdü ancak ne eksik olduğumu bilmiyorum çünkü bu geçici "BaseCollection" için bir gereksinim görmüyorum. Amacı nedir? –
rtpHarry