c# - LINQ to Entities does not recognize the method 'Int32 -
public actionresult readxmldevices(int groupid) { var query = k in xmlentities.unassigneditems k.devoracc == true && k.group == groupid select k; var view_query = in query select new getfreedevices { marticlenumber = i.articlenumber, mfirmware = i.firmware, mgroup = i.group, mname = i.name, msoftware = i.softwareversion, sa = getnumberofdevices(i.articlenumber,2), sth = getnumberofdevices(i.articlenumber,3), sasth = getnumberofdevices(i.articlenumber,7) }; return partialview(view_query); } public int getnumberofdevices(string artno,int loc) { var num_dev = (from k in xmlentities.deviceview k.reserved == false && k.sold == false && k.locationnameid == loc && k.articlenumber == artno select k).count(); return num_dev; }
error:
linq entities not recognize method 'int32 getnumberofdevices(system.string, int32)' method, , method cannot translated store expression. how resolve this???
you can split query in 2 make sure list in-memory before calling getnumberofdevices()
method. can make query in-memory converting results list
, or in case list<getfreedevices>
. way, linq entities not have translations , xml , can use getnumberofdevices()
method.
var view_query = (from in query select new getfreedevices { marticlenumber = i.articlenumber, mfirmware = i.firmware, mgroup = i.group, mname = i.name, msoftware = i.softwareversion }).tolist(); var result_query = in query select new getfreedevices { marticlenumber = i.marticlenumber, mfirmware = i.mfirmware, mgroup = i.mgroup, mname = i.mname, msoftware = i.msoftware, sa = getnumberofdevices(i.marticlenumber,2), sth = getnumberofdevices(i.marticlenumber,3), sasth = getnumberofdevices(i.marticlenumber,7) }; return partialview(result_query);
please note last statement requires partialview accept list or ienumerable
instead of iqueryable
.
Comments
Post a Comment