Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

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.

share|improve this question
    
Where does the saveToDB method live? Is it static? How are the XmlNodeList created and modified? –  Tag Nov 7 '12 at 11:00
    
@Tag The saveToDB method is in the same class file. The XmlNodeList are created using the .SelectNodes method from a XmlElement object. –  edparry Nov 7 '12 at 11:07
1  
Oops, I asked 'How' when I meant to ask 'Where'. I was trying to understand the relationship between the node lists and the class where saveToDB lives. There might be a better way to organize the class to make saving the node lists easier. –  Tag Nov 7 '12 at 12:16
add comment

2 Answers 2

up vote 7 down vote accepted

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.

share|improve this answer
    
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! –  edparry Nov 7 '12 at 14:35
    
You're welcome. –  tanathos Nov 7 '12 at 14:56
2  
Just remember that a Dictionary doesn't preserve order; that might be okay, or you might need to use a List<KeyValuePair> instead. –  codesparkle Nov 8 '12 at 22:55
    
It's a good point –  tanathos Nov 8 '12 at 23:23
add comment

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);
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.