2016-05-10 11 views
3

リスト/アレイの一部である場合には検索:私はリストがキーワードこれが含まれている場合、コードを見つけたいサブストリングは、私は、リストのように定義した直接

List<string> content = new List<string>(){ "Hello This", "This is", "This" }; 

は、はいている場合は、その最初の出現を取得。

既存のコード:

foreach(string line in content){ 
    if(line.Contains("This")) 
      return line; 
} 

私はいくつかの他の代替がある場合は、単純にして知りたいです。完全な文字列を知っていればList.Containsを使うことができますが、部分文字列の場合はどのように処理するのですか?

USING .NET 2.0。 LINQを使わずに提案してください。

+0

何現在のコードに間違いがありますか? – DGibbs

+0

@DGibbs何も間違っていますが、私はこれの代わりに私が使うことができるもっとシンプルなものがあるかどうかを知りたかったのです。 –

+1

@B V Ramanそれは私にとって非常に簡単です。私がLINQを使うことができなければ、それは私がやる方法です。私はあなたが大文字と小文字を区別しない比較をしていることを確認していることを示唆しているだけです/ – DGibbs

答えて

1

から入手可能です:

List<string> content = new List<string>() { "Hello This", "This is", "This" }; 
string keyword = "This"; 
string element = content.Find(delegate(string s) { return s.Contains(keyword); }); 
-1

あなたは、これはあなたのループの場合と同じことをするでしょう、LINQを使用することができます。

+0

彼は彼が検索している項目を含むリストを知っていないので、彼はFirstOrDefaultが欲しいでしょう... –

+0

それはあなたが正しいです。 – Carra

+0

ありがとう、しかし私は.NET 2.0 –

2

MSDNに述べたように、FindIndexFramework 2.0以降で利用可能であり、あなたの問題のために使用することができます。

FindIndexは、指定された述語で定義された条件に一致する要素を検索し、リスト全体の最初のオカレンスの0から始まるインデックスを返します。

List<string> content = new List<string>() { "Hello This", "This is", "This" }; 
var index = content.FindIndex(p => p.Contains("This")); 
if (index >= 0) 
    return content[index]; 
0

Find()見つかった場合は、指定された 述語によって定義される条件に一致する最初の要素。それ以外の場合は、型Tのデフォルト値はMsdn

検索()は、あなたがC#2.0で探していたものをNET Framework 2.0ここ

List<string> content = new List<string>() { "Hello This", "This is", "This" }; 
string firstOccurance = content.Find(g => g.Contains("This")); 
関連する問題