Esse seu código vai rodar infinitamente, vai da stackoverflow.
Quanto ao VAR se for em relação a var xml = new XElement(""):
A partir do Visual C# 3.0, variáveis que são declaradas no escopo do método podem ter um tipo implícito var. Uma
variável local digitada implicitamente tem rigidez de tipos como se você tivesse declarado o tipo, mas o compilador determina o tipo.
var xml = new XElement("");
//Mesma coisa que
XElement xml = new XElement("");
Att,
Breno Queiroz
StudioWs3 - Soluções Web