2009-05-11 7 views
3

Ich möchte ein Zeichen aus einer Zeichenfolge wählen, wenn es in der Zeichenfolge vorhanden ist, ich habe folgend so weit das bekommt, aber ich bin nicht sicher, warum es nicht kompilieren:Wie wähle ich Token aus einer Zeichenfolge mit LINQ?

IList<string> tokens = _animals.Split(';'); 

Func<string, bool> f1 = str => str.Contains("Dog"); 
Func<string, Func<string, bool>, string> f2 = str => Equals(f1, true); 

var selected = tokens.Select(f2); 

Prost

Ollie

Antwort

0

Oder in Worten

var selected = from token in tokens where token.Contains("Dog") select token; 
+0

Ja, das macht den Job auch, obwohl ich die Abfrage-Syntax ist mehr als das, was in diesem Fall notwendig ist (ein einfacher Aufruf der Where-Erweiterung-Methode wird tun). – Noldorin

+0

@Noldorin Diese Version ist die Verständnissyntaxversion Ihrer Lösung –

4

Benötigen Sie wirklich LINQ, das zu tun? Warum können Sie so etwas tun:

_animals.Contains("Dog") 
+0

keine Notwendigkeit, Ihr Problem komplizierter, als es sein sollte zu machen. Ich schlage vor, ein Beispiel zu finden, das besser zu Linq passt. Erstelle eine Liste von Strings mit den Namen von Presidents (oder wer auch immer) und schreibe dann eine Linq-Abfrage, um alle Namen herauszulesen, die mit "L" oder "Wa" beginnen oder was auch immer. –

+1

Ich bin mir nicht sicher, ob der Fragesteller das will, aber ich könnte mich irren. – Noldorin

+0

Es ist irgendwie albern, einen Token auszuwählen, den du passierst, um zu sehen, ob er existiert. Wenn die Zeichenfolge das Token enthält, warum müssen Sie es erneut auswählen? –

5

Ich glaube, Sie gerade dies wollen.

var selected = tokens.Where(str => str.Contains("Dog")); 
0

versuchen dieses

var result = (from p in tokens where p.Contains("Dog") select p); 
Verwandte Themen