Frage

Nun habe ich ein Objekt namens Mamamia und in der es hat einige String-Eigenschaften. Ich habe eine Liste dieses Objekts und es mit 150 Elementen gefüllt.

Ich versuche List.FindAll zu verwenden, aber ich weiß reaaally nicht, wie es zu tun. Ich habe auf diese Weise versucht:

produto = products.FindAll(delegate(Mamamia cv) {return cv.LocalPackage.Remove(1,21) == cmbPackage.SelectedValue};

Ich weiß nicht, warum die Delegierten dort, ich habe gerade versucht, auf dem Internet von einem anderen Code zu kopieren.

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Der Beauftragte ist dort zu sehen, ob der Wert, den Sie testen, was Sie suchen. Der Aufruf von Remove sieht besorgniserregend wie es obwohl der Wert des mutiert - das ist selten eine gute Sache, wenn Sie durch die Liste suchen. Ich denke, wenn es ein String ist, dann ist es nicht so schlecht, obwohl es nicht sein kann, was Sie nach ...

Was sind die Arten beteiligt sind, und was suchen Sie? Oh, und verwenden Sie C # 3 und / oder .NET 3.5? Das würde es leichter machen (auch C # 3 gegen .NET 2.0 bedeutet, dass Sie einen Lambda-Ausdruck anstelle einer anonymen Methode verwenden könnten).

Was passiert, wenn Sie den Code im Moment laufen? Wenn es nur nicht etwas zu finden, es können nur sein, weil Sie als Referenz Gleichheit testen (wenn SelectedValue kehrt object).

Versuchen Sie folgendes:

produto = products.FindAll(delegate(Mamamia cv) {
    return cv.LocalPackage.Remove(1,21).Equals(cmbPackage.SelectedValue);
});

EDIT:

Es klingt wie Sie nur einen einzigen Wert wollen, und wenn Sie 3.5 verwenden sind .NET wäre es idiomatisch sein LINQ in erster Linie zu verwenden. Ich würde verwenden:

string selectedText = (string) cmbPackage.SelectedValue;
Mamamia item = products.FirstOrDefault
                  (cv => cv.LocalPackage.Remove(1,21) == selectedText);
if (item != null)
{
    // Found it; otherwise item will be null
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top