Nasıl bir IEnumerable<T> ilk unsuru alabilirim .net?
Ben sık sık IEnumerable<T>
ilk öğe kapmak istiyor .net, ve bunu yapmak için iyi bir yol bulamadım. Buldum en iyisidir:
foreach(Elem e in enumerable) {
// do something with e
break;
}
Yuck! Bunu yapmak için iyi bir yol var mı?
CEVAP
Eğer ETMENİZ kullanabilirsiniz kullanabilirsiniz:
var e = enumerable.First();
Bu ise sayısız boş ise bir istisna olsa atar: kullanabilirsiniz:
var e = enumerable.FirstOrDefault();
FirstOrDefault()
türleri veya varsayılan 'sıfır değeri' value tipleri için. null
edilecek olursa, sayısız boş ise default(T)
döndürecektir
Eğer sen bir insan değilsin SERİ, daha sonra yaklaşımın teknik olarak doğru ve farklı daha yaratıcı bir numaralandırma kullanarak GetEnumerator
MoveNext
yöntemleri almak için ilk sonuç (bu örnek varsayar sayısız bir IEnumerable<Elem>
):
Elem e = myDefault;
using (IEnumerator<Elem> enumer = enumerable.GetEnumerator()) {
if (enumer.MoveNext()) e = enumer.Current;
}
Joel Coehoorn söz .Single()
açıklamalarda; bu da iş, Eğer seni bekliyorlar senin sayısız içerir tam olarak bir öğe - ancak atar bir istisna ise, ya boş ya da daha büyük bir eleman. FirstOrDefault()
benzer bir şekilde bu senaryo kapsayan SingleOrDefault()
karşılık gelen bir yöntem yoktur. Ancak, David B SingleOrDefault()
hala sayısız daha bir madde daha bulunduğu durumda bir özel durum olduğunu açıklıyor.
Edit: Teşekkürler Marc Gravell işaret ihtiyacım elden benim IEnumerator
nesne kullandıktan sonra bunu aldım düzenlenmiş olmayan bir SERİ örnek ekran using
anahtar kelime uygulamak için bu desen.
Nasıl Ruby on Rails geçerli mutlak URL...
Nasıl Krom XML yerine JSON dönmek için...
Nasıl benim Android uygulaması crash-v...
Nasıl div mutlak unsuru center?...
Nasıl her zaman belirli bir şubesinden...