2016-05-10 8 views
3

Ich habe eine Liste wie folgt definiert:finden, wenn ein Substring Teil der Liste/Array direkt

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

ich einen Code finden wollen, wenn die Liste der Schlüsselwörter Dieses enthält, und wenn ja sein erstes Auftreten bekommen .

Bestehende Code:

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

Ich möchte einfach und wissen, ob eine andere Alternative gibt. Wenn wir den vollständigen String kennen, könnten wir List.Contains verwenden, aber für einen Teilstring, wie weiter?

VERWENDUNG VON .NET 2.0. Bitte schlagen Sie vor, ohne LINQ zu verwenden.

+0

Was ist falsch mit Ihrem aktuellen Code? – DGibbs

+0

@DGibbs nichts ist falsch, aber ich wollte wissen, ob es etwas einfacher/direkter könnte ich stattdessen verwenden könnte. –

+1

@B V Raman Es sieht für mich vollkommen einfach aus. Wenn ich LINQ nicht verwenden könnte, würde ich es tun. Ich würde nur vorschlagen, dass Sie einen Vergleich zwischen Groß- und Kleinschreibung vornehmen./ – DGibbs

Antwort

1

Hier ist, was Sie für die Suche in C# 2.0:

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

Sie Linq verwenden, könnte dies das Gleiche tun wie Ihre for-Schleife:

+0

Er will FirstOrDefault, wie er nicht weiß, die Liste enthält das Element, das er sucht ... –

+0

Geändert, Sie sind richtig. – Carra

+0

Danke, aber jeder Ansatz ohne LINQ seit ich auf .NET 2.0 –

2

Wie auf MSDN erwähnt, FindIndex seit Framework 2.0 zur Verfügung und kann für Ihr Problem verwendet werden.

FindIndex sucht nach einem Element, das den durch das angegebene Prädikat definierten Bedingungen entspricht, und gibt den nullbasierten Index des ersten Vorkommens in der gesamten Liste zurück.

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() Das erste Element, das die Bedingungen von dem angegebenen Prädikat definiert übereinstimmt, wenn festgestellt; andernfalls ist der Standardwert für Typ T Msdn

Find() erhältlich von NET Framework 2.0

List<string> content = new List<string>() { "Hello This", "This is", "This" }; 
string firstOccurance = content.Find(g => g.Contains("This"));