Ich kann nicht herausfinden, wie man eine "Suche" in einer Liste durchführt, die auf der Verwendung eines Werts basiert, den ich zur Laufzeit übergebe. Wenn Sie meinen unteren Code sehen, möchte ich die CustomClass in der Liste finden können, für die der Path-Parameter gleich X ist, wobei X zur Laufzeit definiert wird.C# List.Find-Methode - wie kann ich einen Wert in das Prädikat übergeben?
Irgendwelche Ideen wie man so einen Fund auf einer Liste macht? Oder ist das nicht möglich, ohne einen Iterator zu schreiben und die Suche manuell durchzuführen? In diesem Fall gibt es vielleicht eine Schlüsselsammlung, die ich stattdessen verwenden sollte?
private List<CustomClass> files;
public void someMethod()
{
Uri u= new Uri(www.test.com);
CustomClass cc = this.files.find(matchesUri(u)); // WON'T LET ME DO THIS
}
private static bool matchesUri(List<CustomClass> cc, Uri _u)
{
return cc.Path == _u; }
public class CustomClass
{
private Uri path;
public Uri Path
{
get { return this.path; }
set { this.path = value; }
}
}
PS. Ich muss zugeben, dass ich nicht ganz das Prädikat Sachen in der doco folgen bei http://msdn.microsoft.com/en-us/library/x0b5b5bc.aspx
danke Jungs - nebenbei bemerkt - sollte ich in der Lage gewesen sein (wenn ich mehr auf C# hatte), indem ich nur die Syntax für die Methode in der Doco? (z. B. Parameter, match, Typ: System .. ::. Prädikat <(Of <(T>)>), Das Prädikat <(Of <(T>)>) Delegate, definiert die Bedingungen des Elements für die Suche nach ... – Greg
Parametertyp beschränkt den Typ von Delegat, das Sie an die Methode übergeben können, und somit die Signatur der Methode oder des Lambda, die Sie verwenden müssen, um diesen Delegaten zu erstellen. Es bedeutet an und für sich nicht mehr die Verwendung von Lambdas als jeder andere Delegattyp. Dokumentation für Lambdas ist hier: http://msdn.microsoft.com/en-us/library/bb397687.aspx –
Delegate ähnelt einem Funktionszeiger. Durch Betrachten der Signatur ('delegate bool Prädikat (T obj)') können Sie sehen, dass ein Prädikat eine Funktion (Methode) ist, die einen ** einzigen Parameter vom Typ T ** und einen ** bool ** zurückgibt. . –
Groo