| 

.NET C# Java Javascript Exception

2
Hallo,

ich versuche folgendes zu erreichen:

Methoden Definition:
bool Exists<T> (Expression<Func<bool,T> lambda)
{
objektListe.Exist (func) // leider geht das nicht, oder?

}


Ich wollte die Methode etwa so aufrufen:

if(Exists<IrgendeinObject> (m => m.IrgendEinWert == IrgendeinAndererWert)
...


Bei der Implementierung der Methode scheitere ich aber (wie man oben sehen kann). Ich wollte diese Funktionalität in einem repository einbauen.
Kann mir jemand sagen, wie sowas geht?

Danke!
22.09.2011
mph 227 1 6
2 Antworten
2
Hallo,

Der Expression-Tree muss zuerst zu einem Delegaten kompiliert werden,
Expression<Func<bool, T> lambda = ...
Func<bool, T> delegate = lambda.Compile();

dann kann der Delegat normal verwendet werden.

BTW: ich denke es sollte eher Func<T, bool> heißen.

mfG Gü
22.09.2011
gfoidl 9,4k 3 5
Danke! Und ja, so sollte es wohl sein!
mph
mph 26.09.2011
1
Warum machst Du es nicht so:

bool Exists<T> (Predicate<T> lambda)
{
objektListe.Exists(lambda);
}
22.09.2011
Matthias Hlawatsch 13,2k 4 9
Da ich, warum auch immer, diese Antwort nicht editieren kann (HTTP 500), hier noch eine Anmerkung:

Dein Beispiel-Code zum Ausführen sieht etwas merkwürdig aus. Ist "IrgendeinObject" eine Klasse? Dann fehlt das Objekt, auf dem Du die Exists-Methode aufrufen kannst, und der Klassenname wäre eher ungünstig gewählt. Oder soll "IrgendeinObject" ein Objekt sein? Dann hast Du den Typparameter einer generischen Methode verwechselt mit einem Methodenargument oder irgendwas anderem.
Matthias Hlawatsch 23.09.2011
Außerdem könntest Du Dir die Methode auch sparen und schlicht schreiben:
objektListe.Exists(m => m.IrgendEinWert == IrgendeinAndererWert);
Matthias Hlawatsch 23.09.2011
1
500-Bug gefixt.
Marvin Steppat 28.09.2011
Danke! Es fing an, lästig zu werden... Schließt Du bitte noch die beiden Bugs:
http://codekicker.uservoice.com/forums/21227-general/suggestions/2280244-bug-beim-editieren-von-antworten?ref=title
und
http://codekicker.uservoice.com/forums/21227-general/suggestions/2271509-serverfehler-beim-posten?ref=title
Matthias Hlawatsch 28.09.2011

Stelle deine .net-Frage jetzt!