Finding if value exists in list with LINQ and saving info into a dataset, possibly -
i brand new linq, have loops through orgs user belongs to, make sure have permissions various operations on form.
looks this:
//loop through user orgs see if selected, have access foreach (orgpermission userorg in user.orgs) { //get org permissions selected org if ((ddlorg.selectedvalue == (userorg.org.orgcode + "-" + userorg.org.orgsubcode))) { if (userorg.type.contains("3") || userorg.type.contains("00")) { / /do here. }}}
i trying rid of loop. if user has lots of orgs it's taking little while run, , i'm trying optimize application run time.
i tried following:
bool has = user.orgs.any(cus => cus.org.orgcode + "-" + cus.org.orgsubcode == ddlorg.selectedvalue);
as can see, ddlorg dropdown value in org-suborg format. i'm getting false.
i save result, not in bool, possibly single user.org found, can use check permissions , other stuff.
am on right track here? please point me in right direction.
you typically wouldn't rid of loop, rather filter items being looped:
var users = user.orgs.where(userorg => ddlorg.selectedvalue == (userorg.org.orgcode + "-" + userorg.org.orgsubcode) && (userorg.type.contains("3") || userorg.type.contains("00"))); foreach(orgpermission userorg in users) { // operation }
that being said, not going faster, linq query still looping through items, potentially simpler maintain.
if need single orgpermission
(ie: first), speed via:
var userorg = user.orgs.firstordefault(userorg => ddlorg.selectedvalue == (userorg.org.orgcode + "-" + userorg.org.orgsubcode) && (userorg.type.contains("3") || userorg.type.contains("00"))); // userorg orgpermission if found, or null if not.
Comments
Post a Comment