Під час пошуку відповіді на це запитання я зіткнувся з подібними, використовуючи LINQ, але мені не вдалося повністю зрозуміти їх (і, таким чином, реалізувати їх), оскільки я не знайомий з цим. Що я хотів би, в основному, це:
- Перевірте, чи містить якийсь елемент списку певний рядок.
- Якщо це так, знайдіть цей елемент.
Я, чесно кажучи, не знаю, як би я пішов робити це. Що я можу придумати, це це (звичайно, не працює):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Я знаю, Чому це не працює:
myList.Contains()
не повертаєтьсяtrue
, оскільки він перевірить, чи відповідає цілий елемент списку рядку, який я вказав.myList.IndexOf()
не знайде події, оскільки, як це повторюється, він перевірить, чи відповідає елемент, що відповідає рядку.
Досі я не маю поняття, як вирішити цю проблему, але я думаю, що мені доведеться використовувати LINQ, як було запропоновано у подібних моїх питаннях. Якщо говорити, якщо це так, я хотів би, щоб відповідач пояснив мені використання LINQ у своєму прикладі (як я вже сказав, я не турбувався з цим у свій час із C #). Дякую заздалегідь, хлопці (та дівчата?).
EDIT: я придумав рішення; просто переведіть список, перевірте, чи містить поточний елемент рядок, а потім встановіть рядок, рівний поточному елементу. Мені цікаво, проте чи існує більш ефективний спосіб, ніж цей?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
myString
, в поточному циклі ви отримаєте останній елемент. Це залежить від вас, чи хочете ви знайти перше чи останнє, якщо ви просто хочете знайти перше, а потім розірвіть цикл після пошуку елемента.