[X] konumundaki öğenin listede olup olmadığını kontrol edin


91

Bir dizge listem varsa

List<String> list = new list<String>();
list.add("str1");
list.add("str2");
list.add("str3");

ve örneğin, dizin konumu 2'nin bir öğe içerip içermediğini bilmek istiyorum, bunu listenin uzunluğunu saymadan veya bir try catch kullanmadan yapmanın basit bir yolu var mı?

Bu başarısız olacağından, bir deneme yakalama ile bunu aşabilirim, ancak bu aşırı görünüyor

if(list.ElementAt(2) != null)
{
   // logic
}

Yanıtlar:


224
if(list.ElementAtOrDefault(2) != null)
{
   // logic
}

ElementAtOrDefault (), System.Linqad alanının bir parçasıdır .

Bir Listeniz olmasına rağmen, kullanabilirsiniz list.Count > 2.


4
Normal .Count kontrolünden daha hızlı okunur, ancak lütfen "boş" öğelerin teorik olarak listenin içinde geçerli olduğuna dikkat edin, bu nedenle test tatmin edilmezse istisna atmak için buna güvenmeyin.
AFract

1
Kullanabilirsiniz ?? operatör yani. list.ElementAtOrDefault(2)??defaultvalue
George Kargakis

12
if (list.Count > desiredIndex && list[desiredIndex] != null)
{
    // logic
}

5
list.Count> istenilenIndex karşılanmış olsa bile, indeks <0 ise elemanın alınması bir istisna
atacaktır

2
iyi, bu nitpicking. WantedIndex muhtemelen pozitif sayı olacaktır. Bu güvenilir bir iddia değilse, sadece istenilenIndex> -1 ekleyin ..
SubjectX

1
@SubjectX - Nitpicking değil. Döndürülen bir dizinin kullanılması yaygındırIndexOf
Kyle Delaney

0
int? here = (list.ElementAtOrDefault(2) != 0 ? list[2]:(int?) null);

2
Yalnızca kod yanıtları, sorunu nasıl çözdüklerini açıklamadıkları için önerilmez. Lütfen yanıtınızı, bu sorunun halihazırda sahip olduğu diğer kabul edilen ve olumlu oylanan yanıtlarda nasıl geliştiğini açıklamak için güncelleyin. Ayrıca, bu soru 7 yaşında, çabalarınız yakın zamanda cevaplanmamış soruları olan kullanıcılar tarafından daha çok takdir edilecektir. Lütfen inceleyin Nasıl iyi bir cevap yazabilirim .
FluffyKitten
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.