c# - Func parameter in LINQ expression -


i have problem func delegate in linq expression. problematic part of method (repository.items iqueryable<t>) :

public static actionresult xxx<t>(irepository<t> repository,         func<t, int> keyextractor, int id = 0)     {         if (id == 0) return ...         t item = repository.items.where(x => keyextractor(x) == id).            firstordefault();         if (item == null) return ...         try {             repository.deleteitem(item);             return ...         } catch (exception e) {             return ...         }     } 

but when run method, error type of node not supported in linq entities. tried version predikate had no luck @ all.

any ideas how fix it?

i find out 1 possible way. linq performs delayed execution must first enforce execution this:

t item = repository.items.asenumerable().where(x => keyextractor(x) == id)

if want work on iqueryable<t>, argument must expression<func<t, int>>, not func<t, int>.

func<t, int> work ienumerable<t>.

where extensions methods has same name iqueryable<t> , ienumerable<t>, not same arguments...

(by way write repository.items.firstordefault(x => keyextractor(x) == id);


Comments

Popular posts from this blog

java - Run a .jar on Heroku -

java - Jtable duplicate Rows -

validation - How to pass paramaters like unix into windows batch file -