この質問への回答を検索しているときに、LINQを利用して同様の質問に出くわしましたが、慣れていないため、それらを完全に理解することはできません(したがって、それらを実装することもできません)。私が基本的にしたいのはこれです:
- リストの要素に特定の文字列が含まれているかどうかを確認します。
- ある場合は、その要素を取得します。
正直なところ、どうすればいいのかわかりません。私が思いつくことができるのはこれです(もちろん機能していません):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
それが機能しない理由を知っています:
myList.Contains()
true
リストの要素全体が指定した文字列と一致するかどうかをチェックするため、は返されません。myList.IndexOf()
それは再びそうであるので、文字列に一致する要素をチェックするので、オカレンスは見つかりません。
それでも、この問題を解決する方法はわかりませんが、同様の質問で提案されているように、LINQを使用する必要があると思います。そうは言っても、ここでそうである場合は、回答者に例でのLINQの使用について説明してほしい(先ほど述べたように、C#のときは気にしていません)。事前にみんな(そしてギャル?)ありがとうございました。
編集:私は解決策を考え出しました; リストをループして、現在の要素に文字列が含まれているかどうかを確認し、現在の要素と等しい文字列を設定します。しかし、これより効率的な方法はありますか?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
myString
ます。現在のループでは、最後の要素を取得します。最初と最後のどちらを検索するか、最初だけを検索するかどうかはあなた次第です。アイテムを見つけた後、ループを解除します。