22

私はそのようなリストを持っており、このリスト内で別の文字列からの部分文字列を検索できるようにしたいと考えています。例:

List<string> list = new List<string>();
string srch = "There";
list.Add("1234 - Hello");
list.Add("4234 - There");
list.Add("2342 - World");

リスト内を検索して"There"戻りたい"4234 - There"。私はもう試した:

var mySearch = list.FindAll(S => s.substring(srch));
foreach(var temp in mySearch)
{
    string result = temp;
}
4

6 に答える 6

30

Linqを使用すると、最初の結果を取得するだけです。

string result = list.FirstOrDefault(s => s.Contains(srch));

Linqなしでこれを行うには(たとえば、.NET 2.0などの以前の.NETバージョンの場合) 、List<T>FindAllメソッドを使用できます。この場合、検索語を含むリスト内のすべてのアイテムが返されます。

var resultList = list.FindAll(delegate(string s) { return s.Contains(srch); });
于 2012-05-07T20:25:22.087 に答える
13

すべてのエントリを返すには:

IEnumerable<string> result = list.Where(s => s.Contains(search));

最初のものだけ:

string result = list.FirstOrDefault(s => s.Contains(search));
于 2012-05-07T20:25:43.553 に答える
1

私がしなければならなかった同じ問題。

あなたはこれを必要とします:

myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1)

どこ:

myListisには、任意の位置に含まれる必要がList<String>ある値がありますmyString

したがって、事実上、myString にリストのエントリが含まれているかどうかを検索します。 これがあなたが望んでいたものであることを願っています...

于 2013-10-27T08:05:02.990 に答える
1

あなたが書いたものはコンパイルエラーを引き起こします

'string.Substring(int)' に最もよく一致するオーバーロードされたメソッドには、いくつかの無効な引数があります

部分文字列は、結果の文字列の文字位置および/または長さを使用して文字列の一部を取得するために使用されます。

たとえば srch.Substring(1, 3)、文字列「her」を返します

他の人が述べContainsたように、ある文字列が別の文字列内にあるかどうかを示す which を使用する必要があります。使用する実際の位置を知りたい場合IndexOf

于 2012-05-07T20:34:50.193 に答える
0

私はindexOfまたはcontainsを使用するのが好きです

someString.IndexOf("this");
someString.Contains("this");
于 2012-05-07T20:44:33.453 に答える