I have a method(C#) which takes an XmlNodeList and a String and saves the xml data into a database. That code isn't the problem (at least for the moment), but because I have multiple XmlNodeLists, each needing a different String (the heading), I end up with code like
saveToDB(students, "Students");
saveToDB(teachers, "Teachers");
saveToDB(workers, "Workers");
...etc, there's about 8 of those in total. It all works okay, but I wonder if there's a better way to call the function, rather than doing it 8 times? I guess I could wrap all of the data into an object, but I'd still have to set it up, and pull the data out before and afterwards, so that's surely just moving the problem elsewhere? Or is there simply no real way around this, and the issue lies with how I've approached this method in the first place?
I look forward to your responses.
2 Answers 2
I think you could create a new saveToDB
method that requires a Dictionary<string, XmlNodeList>
inside this new method you could cycle through the Keys (string) and for each one call the current saveToDB(string, XmlNodeList)
.
Yes, it only move your problem: you've to prefill the dictionary, but I really think there's no other options... at one point you HAVE to enumerate your datas.
-
\$\begingroup\$ I would agree with you, @tanathos, I think this is the best option. It'll reduce it down to a single looped call to
saveToDB
, and I doubt that it would effect performance noticeably. Thanks! \$\endgroup\$edparry– edparry2012年11月07日 14:35:39 +00:00Commented Nov 7, 2012 at 14:35 -
3\$\begingroup\$ Just remember that a
Dictionary
doesn't preserve order; that might be okay, or you might need to use aList<KeyValuePair>
instead. \$\endgroup\$Adam– Adam2012年11月08日 22:55:08 +00:00Commented Nov 8, 2012 at 22:55 -
\$\begingroup\$ It's a good point \$\endgroup\$tanathos– tanathos2012年11月08日 23:23:01 +00:00Commented Nov 8, 2012 at 23:23
There are few ways you can save our work .. this is one way you can do this easily..
you can have a List or Tuple of above string and XMLnodelist which you can iterate through and save the db result.
//pseudo code will be
for(obj in collectionOfStringandXMlnodeList)
SaveToDb(obj);
saveToDB
method live? Is it static? How are theXmlNodeList
created and modified? \$\endgroup\$saveToDB
method is in the same class file. TheXmlNodeList
are created using the.SelectNodes
method from aXmlElement
object. \$\endgroup\$saveToDB
lives. There might be a better way to organize the class to make saving the node lists easier. \$\endgroup\$