Bu soruya bir cevap ararken, LINQ kullanarak benzer sorulara rastladım, ancak onları tam olarak anlayamadım (ve böylece uygulayamadım), çünkü aşina olmadığım için. Temel olarak, istediğim şudur:
- Listedeki herhangi bir öğenin belirli bir dize içerip içermediğini kontrol edin.
- Varsa, o öğeyi alın.
Dürüst olmak gerekirse, bunu nasıl yapacağımı bilmiyorum. Ne gelebilir bu (elbette çalışmıyor):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
NEDEN işe yaramadığını biliyorum:
myList.Contains()
Döndürmeztrue
, çünkü listenin tüm bir öğesinin belirttiğim dizeyle eşleşip eşleşmediğini kontrol eder.myList.IndexOf()
bir olay bulamaz, çünkü yine olduğu gibi, dizeyle eşleşen bir öğeyi kontrol eder.
Yine de, bu sorunun nasıl çözüleceğine dair hiçbir fikrim yok, ama benimkine benzer sorularda önerildiği gibi LINQ kullanmak zorunda kalacağımı düşünüyorum. Bununla birlikte, burada durum buysa, cevaplayıcının bana örneklerinde LINQ kullanımını açıklamasını istiyorum (dediğim gibi, C # ile zamanımda bununla uğraşmadım). Şimdiden teşekkürler çocuklar (ve kızlar?).
EDIT: Bir çözüm buldum; sadece listede dolaşın, geçerli öğenin dizeyi içerip içermediğini kontrol edin ve sonra geçerli öğeye eşit bir dize ayarlayın. Merak ediyorum, bundan daha etkili bir yol var mı?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
myString
, geçerli döngünüzde son öğeyi alırsınız. İlkini veya sonunu bulmak istiyorsanız, sadece ilkini bulmak istiyorsanız, öğeyi bulduktan sonra döngüyü kırın.