Bir süredir LINQ kullanıyorum (ve keyfini çıkarın), ancak .NET özel koleksiyonları (DataRowCollection, ControlCollection) ile karşılaştığımda bir hız topu çarptı gibi geliyor. LINQ'yi bu özel denetimlerle kullanmanın bir yolu var mı ve Microsoft'un bunu bir sonraki sürümde yayınlayacağını düşünmüyor musunuz? Ya da bunları LINQ olmayan yol üzerinde yinelemeye mi yoksa koleksiyondaki eşyaları LINQ-mümkün koleksiyonlara kendimiz mi çekeceğiz?Microsoft, tüm koleksiyonları LINQ tarafından kullanılabilir hale getirecek mi?
cevap
ControlCollection
gibi koleksiyonların LINQ ile çalışmadığının nedeni, güçlü yazılmadıklarıdır. Bir eleman türü olmadan LINQ, güçlü yazılan yöntemler oluşturamaz. Türü bildiğiniz sürece, güçlü bir şekilde yazılan numaralandırma oluşturmak ve dolayısıyla LINQ ile kullanmak için Cast
yöntemini kullanabilirsiniz.
ControlCollection col = ...
var query = col.Cast<Control>().Where(x => ...);
Microsoft şimdiye yapmak irâde gelince Örneğin
için bu varsayılan olarakIEnumerable<T>
uygularlar. Benim tahminim burada yok. Bunun sebebi, bunu yapmanın kırılmada bir değişiklik olması ve kodda beklenen davranışa neden olabilmesidir. Sadece
ControlCollection
için
IEnumerable<Control>
'un uygulanması bile, kullanıcı uygulamalarını kesebilecek ve neredeyse kesin olarak kesebilecek aşırı yüklenme çözünürlüğünde değişikliklere neden olabilir.
Bunun nedeni: IQueryable IEnumerable<T>
uygulamak veya yok Koleksiyonları, LINQ yinelenebiliyorsa edilemez
, IEnumerable
olmalıdır. Eh, tüm koleksiyonlar IEnumerable uygular (aksi takdirde onlar üzerinde döngü mümkün olmaz). Ancak linq tarafından kullanılabilmeleri için genel sürümü (IEnumerable
IEnumerable'ın Genel sürümünden bahsettim, ancak SOF (Text Editor) bunu yapmama izin vermeyecek. Erken farketmedim, düzeltmeyi yaptım. Yine de teşekkürler –
: Linq
myDataRowCollection.Cast<DataRow>().Where.....
ve kullanan yol. Koleksiyondaki nesnelerin ne olduğunu biliyorsanız, bunu kullanabilmeniz gerekir.
- 1. HttpContext'i Birim Testlerim tarafından nasıl kullanılabilir hale getirebilirim?
- 2. Microsoft Kinect .NET Gadgeteer ile birlikte kullanılabilir mi?
- 3. Türün bir nesnesini seri hale getirecek kurucu, türetilmiş sınıfta bulunamadı
- 4. Kaynakları iki birlikte kullanılabilir hale getirme
- 5. Aynı Zookeeper örneği hizmet sayısı tarafından kullanılabilir mi?
- 6. Yapısal hale getirilsin mi?
- 7. LINQ (tarafından ve Kont)
- 8. Assembly.GetExecutingAssembly() kullanılabilir mi?
- 9. Tüm kullanılabilir ResourceBundle Dosyaları
- 10. SVG dosyaları Raphael'de kullanılabilir mi?
- 11. Cipher nesnesi tekrar kullanılabilir mi?
- 12. MongoDB :: MongoIds koleksiyonları arasında benzersiz mi?
- 13. Linq fazlalık üretir mi?
- 14. "Her" için Microsoft belirli mi?
- 15. LINQ Lambda Grubu tarafından Sum
- 16. LINQ Grubu tarafından basıp toplama
- 17. XAML'de değerler yüzdesi kullanılabilir mi?
- 18. Android Youtube API Kullanılabilir mi?
- 19. batman.js ekspres ile kullanılabilir mi?
- 20. MySqlBulkLoader bir işlemle kullanılabilir mi?
- 21. Kerneli kodlarken stdio kullanılabilir mi?
- 22. FoldLeft işlevi R'de kullanılabilir mi?
- 23. Java'da şifreleme türleri kullanılabilir mi?
- 24. , SQLite'nin iOS yapısında kullanılabilir mi?
- 25. XmlAttributes seçmeli olarak XmlIgnore için kullanılabilir mi?
- 26. OpenMP High Sierra LLVM'de kullanılabilir mi?
- 27. Tüm kullanılabilir alanı StackPanel'de doldurun
- 28. LINQ Maksimum uzantı yöntemi boş koleksiyonları bir hata verir
- 29. Microsoft Access otomatik tamamlama alanları olabilir mi?
- 30. WPF adorner katmanı ne zaman kullanılabilir hale gelir?
Bu cevaptır. Yayınlamayı unuttum. Microsoft, hala ControlCollection ve benzeri için Strongly Type Koleksiyonlar ekleyebilir. Katkıda bulunan herkese teşekkürler. –
Neden gerçekten Microsoft, ControlCollection'ı güçlü bir şekilde yazılmış bir koleksiyon olarak (Kontrol türünde) yapmamıştır? – BornToCode