remove repetitive, tough coded loops conditions c#
i have category compares 2 instances same objects, generates list differences. finished looping by pivotal collections stuffing set collections list altered (this competence some-more clarity after regard formula below). works, generates an vigilant lets me know accurately total private between "old" vigilant "new" one.
my question/concern this...it unequivocally ugly, tons loops conditions. there improved proceed store/approach this, but carrying rest heavily spontaneity groups hard-coded conditions?
open vacant diffsteps()
{
try
{
//confirm there 2 populated objects compare
(newstep.id != guid.empty && savedstep.id != guid.empty)
{
//<todo> good proceed review fast objects accurately same...hash?
//compare stepdoc collections:
olddocs = savedstep.stepdocs;
newdocs = newstep.stepdocs;
collection<stepdoc> docstodelete = new collection<stepdoc>();
foreach (stepdoc olddoc olddocs)
{
bool mislay = false;
foreach (stepdoc newdoc newdocs)
{
(newdoc.docid == olddoc.docid)
{
mislay = true;
}
}
(delete)
docstodelete.add(olddoc);
}
foreach (stepdoc doc docstodelete)
{
olddocs.remove(doc);
newdocs.remove(doc);
}
//same loop(s) stepusers...omitted brevity
//this collection users delete; collection
//of users changed. so, collection also needs checked
//to permisssions (or any destiny properties) have changed.
foreach (stepuser user userstodelete)
{
//compare two
stepuser olduser = null;
stepuser newuser = null;
foreach(stepuser oldie oldusers)
{
(user.userid == oldie.userid)
olduser = oldie;
}
foreach (stepuser newie newusers)
{
(user.userid == newie.userid)
newuser = newie;
}
if(olduser != zero && newuser != null)
{
(olduser.role != newuser.role)
updatedroles.add(newuser.name, newuser.role);
}
oldusers.remove(user);
newusers.remove(user);
}
}
}
catch(exception ex)
{
twine errormessage =
string.format("error generating diff between step objects {0} {1}", newstep.id, savedstep.id);
log.error(errormessage,ex);
throw;
}
}
the targeted horizon 3.5.
Comments
Post a Comment