Büyük Öznelik Soru: Sık sık LINQ kullanarak bir nesne kümesini filtrelemek ve sonra sorgudan sonra, sonuçların her birinde bir eylem gerçekleştirmek için eski bir moda foreach yapıyor buluyorum. Bu iki görevi birleştirmenin iyi bir yolu var mıdır, öyle ki, her nesne üzerinde Where() yüklemi ile eşleşen bir eylem gerçekleştirilir mi? Hemen bir Eylemi Seçme() içine geçirmek gibi. Muhtemelen derlemeyecek, ama bir Funco'yu bir boole döndürecek şekilde aktarmaya ne dersiniz, o zaman bunu, hatalarla veya başarılarla bir şeyler yapabilecek başka bir sorgunun içine yerleştirebilirsiniz. Bunu üretim kodunda kimse yaptı mı? Bu kötü bir uygulama olarak kabul edilir mi? Başka düşünceler var mı?Sadece veri seçmek yerine LINQ kullanmak ve eylem yapmak LINQ kullanmak kötü bir uygulamadır?
cevap
List<T>
, bunun için tasarlanmış bir ForEach()
yöntemine sahiptir.
IEnumerable'da bir uzantı ForEach yöntemi uygulayabilirsiniz.
Birçok kişi ForEach
yöntemle istediler - ve gerçekten de (biz MoreLINQ bir var neden olan) kullanışlı olduğunu. Aynı zamanda potansiyel olarak tehlikeli.
LINQ'nun çoğu yan etkilerden kesinlikle vazgeçirir. Onlar mümkün, ancak cesaretini kırdı. Bu yüzden OrderBy, mevcut olanları sıralamak yerine yeni koleksiyonları döndürüyor.
Şimdi ForEach
'u düşünün - bu bir işlev yerine bir "eylem" dır, çünkü hiçbir şey döndürmez. Herhangi bir yan etkisi yoksa, kesinlikle anlamsızdır! Öyleyse, LINQ felsefesinin bir parçası karşısına çıkıyor - temelde işlevsel bir tarzda şeylere yaklaşmıyor.
Gerçekten ya da buna karşı bir dava yapmaya çalışmıyorum - pratikte bence yararlı bir şey var ve ben yani birçok kütüphanede vb. Şaşırmadım. Çok belirgin. eklemek için sözde operatör. Sadece ne yaptığınızı düşünün ve yan etkileri ortaya çıkardığınızı fark edin. LINQ'in işlevsel stili ile daha zorlayıcı bir kodlama tarzı arasında bir sınır var.
Şimdiye kadar MoreLINQ hakkında bilmiyordum. Şimdi başvuruda bulunuluyor ve ForEach'ınız evimdeki her şeyim yerine kullanılıyor. Thanx! –
Neden IEnumerable
- 1. requireJS modülünü tekil olarak kullanmak kötü bir uygulamadır mı?
- 2. Standart olmayan İngilizce karakterleri C# adında kullanmak kötü bir uygulamadır?
- 3. İstemci Nesnesi üzerinde Linq Kullanmak
- 4. Linq ile nesnelere yansıma kullanmak mümkün mü?
- 5. Bir işlev nesnesi yerine lambda kullanmak, kötü performans
- 6. Linq seçmek için son kayıtlar
- 7. LINQ
- 8. Tek bir android uygulamasında çoklu arkaplan hizmetleri kullanmak kötü bir uygulamadır mı?
- 9. Nesne kullanmak için Linq ile bir hiyerarşi nasıl oluşturulur?
- 10. Clojure içinde, kullanmak için ... kullanmak yerine deyimsel olarak kullanmaktır ... ns makrosunda kullanmak yerine ...
- 11. Linq-SQL'i sürükle-bırak olmadan kullanmak mümkün mü?
- 12. LINQ
- 13. Bağlantı yerine Div'leri kullanmak
- 14. STI'da type alanı için Enum kullanmak iyi bir uygulamadır mı?
- 15. LINQ
- 16. Linq GroupBy. veri
- 17. Java Swing Elements'ta HTML Styling'i kullanmak Kötü Bir Uygulama mı?
- 18. LINQ
- 19. Linq
- 20. Linq
- 21. LINQ
- 22. LINQ
- 23. linq
- 24. LINQ
- 25. Linq UNION sorgusu iki öğe seçmek için
- 26. dize C# Linq kullanarak yerine
- 27. LINQ Sorgusu İçinde Bir Döküm Yapmak
- 28. LINQ
- 29. LINQ
- 30. Firebase'deki statik veriler kötü bir uygulamadır?
Her biri() isimli IEnumerable için kendi uzantı yöntemimi ekledim. –