WHERE IN clause using VB.NET in Entity Framework -
i have 2 checkboxlists. based on items checked, checked values concatenated comma separated string , passed entity framework method. result list(of entity).
i want convert
select * dbo.findings /*below criteria added if of values checked*/ findingcategoryid in (<checked values>) , findingseverityid in (<checkboxvalues>)
i unable find equivalent in vb.net in ef.
i looked @ c# post here , came below code. error
unable create constant value of type 'system.object'. primitive types ('such int32, string, , guid') supported in context.
how can use in
clause in vb.net? appreciated.
my code:
public function findings(byval findingseverity string, byval findingcategory string) list(of finding) dim atypeloanid integer = if(not isnothing(audittypeloanid), audittypeloanid, -1) dim findingtargetid = cint(findingtarget.loanheader) using e new lqcentities() dim result = (from f in e.findingentities _ hmd in e.headermetadataentities.where(function(h) h.metadataid = f.targetid).defaultifempty() _ cl in e.checklistentities.where(function(c) c.checklistid = f.targetid).defaultifempty() _ f.audittypeloanid = atypeloanid _ select new finding _ { .findingid = f.findingid, _ .findingcategoryid = f.findingcategoryid, _ .findingseverityid = f.findingseverityid, _ .enteredby = f.aduser.displayname, _ .entereddate = f.entereddate _ }) dim fsarray() = nothing dim fcarray() = nothing if (not string.isnullorempty(findingseverity)) dim fs = findingseverity.split(",") integer = 0 fs.count - 1 dim j integer = 0 if (integer.tryparse(fs(i), j)) redim preserve fsarray(i) fsarray(i) = j end if next if (fsarray.count > 0) result = result.where(function(i) fsarray.contains(i.findingseverityid)) end if end if if (not string.isnullorempty(findingcategory)) dim fc = findingcategory.split(",") integer = 0 fc.count - 1 dim j integer = 0 if (integer.tryparse(fc(i), j)) redim preserve fcarray(i) fcarray(i) = j end if next if (fcarray.count > 0) result = result.where(function(i) fcarray.contains(i.findingcategoryid)) end if end if return result.tolist() end using end function
i changed fsarray , fcarray list(of integer) , worked. code below:
public function findings(byval findingseverity string, byval findingcategory string) list(of finding) dim atypeloanid integer = if(not isnothing(audittypeloanid), audittypeloanid, -1) dim findingtargetid = cint(findingtarget.loanheader) using e new lqcentities() dim result = (from f in e.findingentities _ hmd in e.headermetadataentities.where(function(h) h.metadataid = f.targetid).defaultifempty() _ cl in e.checklistentities.where(function(c) c.checklistid = f.targetid).defaultifempty() _ f.audittypeloanid = atypeloanid _ select new finding _ { .findingid = f.findingid, _ .audittypeloanid = f.audittypeloanid, _ .findingcategoryid = f.findingcategoryid, _ .categorydescription = f.findingcategory.categorydescription, _ .findingseverityid = f.findingseverityid, _ .severitydescription = f.findingseverity.severitydescription, _ .targetid = f.targetid, _ .userresponse = f.userresponse, _ .field = if(f.findingtargetid = findingtargetid, hmd.columndescription, cl.checklistdesc), _ .oldvalue = f.oldvalue, _ .newvalue = f.newvalue, _ .comments = f.comments, _ .enteredby = f.aduser.displayname, _ .entereddate = f.entereddate _ }) if (not string.isnullorempty(findingseverity)) dim fslist new list(of integer) dim fs = findingseverity.split(",") integer = 0 fs.count - 1 dim j integer = 0 if (integer.tryparse(fs(i), j)) fslist.add(j) end if next if (fslist.count > 0) result = result.where(function(i) fslist.contains(i.findingseverityid)) end if end if if (not string.isnullorempty(findingcategory)) dim fc = findingcategory.split(",") dim fclist new list(of integer) integer = 0 fc.count - 1 dim j integer = 0 if (integer.tryparse(fc(i), j)) fclist.add(j) end if next if (fclist.count > 0) result = result.where(function(i) fclist.contains(i.findingcategoryid)) end if end if return result.tolist() end using end function
Comments
Post a Comment