Laden...

LINQ to Entity Framework: Knotentyp 'Invoke'?

Erstellt von 7.e.Q vor 13 Jahren Letzter Beitrag vor 13 Jahren 991 Views
7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren
LINQ to Entity Framework: Knotentyp 'Invoke'?

verwendetes Datenbanksystem: LINQ to Entity Framework

Hi Leute,

ich versuche immernoch, in meiner nach MVVM umgestrickten Anwendung im ViewModel eine Möglichkeit einzubauen, Datensätze zu filtern.

Dazu hab ich in meiner Basisklasse ViewModelBase eine Property "Filter" vom Typ Predicate<T> implementiert, welche ich im entsprechenden ViewModel in einer LINQ Query dann aufrufen will, sofern gesetzt.

Die LINQ Query sieht dann ungefähr so aus:


return from p in Model.Buecher
        where Filter(p)
        select p;

Leider sagt mir die Laufzeit dort, dass LINQ to Entities den Knotentyp Invoke nicht unterstützt.

Jemand 'ne Idee, wie man das Problem am besten umschifft?

Danke

Grüße,
Hendrik

F
10.010 Beiträge seit 2004
vor 13 Jahren

Wenn du doch schon einen Predicate zum Filtern hast, warum dann nicht http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.aspx benutzen?

7.e.Q Themenstarter:in
925 Beiträge seit 2004
vor 13 Jahren

Das habe ich schon probiert. Leider ist CanFilter = False. Ebenso wie CanCustomFilter. Gerade darum bau ich mir ja die ViewModels. Beim direkten Binden der CollectionViewSource an mein WPF Window kann ich nicht filtern. Weshalb, die Frage konnte ich mir noch nicht beantworten.

//edit: Wenn ich die LINQ Query nicht direkt auf der Entity mache, sondern auf einer daraus generierten List, funktioniert das. Ich frage mich nur, ob das auch Änderungen in der Datenbank hinter der Entity berücksichtigt...

//edit 2: Hmm... Das ist 'ne Quick'n'Dirty Lösung. Schön finde ich das nicht. Oder ist das tatsächlich die ultimative Lösung dafür, dass LINQ to Entities kein Invoke kann?


return from p in Model.Buecher.ToArray()
        where Filter(p)
        select p;