In a job interview I was asked to pull a list of records from a database and save them to XML. The data was hierarchical in nature, of course. The code I produce looked a bit like this:
Dictionary<int, XmlNode> connections = new Dictionary<int, XmlNode>();
XmlDocument xdoc = new XmlDocument();
XmlNode root = xdoc.CreateRootNode("Names");
using(IDbConnection con = GetConnection())
using(IDbCommand command = con.CreateCommand())
command.CommandText = "select id, parent id, name from Foo order by parent id;"
IDataReader reader = command.ExecuteReader();
int id = reader.GetInt(0);
int parent = reader.GetInt(1);
string name = reader.GetString(2);
if(parent == 0)
node = root.CreateChild("Name");
node = connections[parent].CreateChild("Name");
node.Text = name;
I believe that the purpose was to check if I know how to use recursion, but it never occurred to me to use it in a case like this. The code above uses a single database query and a single pass on the dictionary. It is, I believe, as efficient as you can get without really trying. The funny thing was that the interviewers tried to get me to use recursion (without saying it), but I literally couldn't understand what they meant until they said it.