using System.Collections.Generic;
private static dynamic ParseObject(XElement xe)
dynamic d = new ExpandoObject();
d.name = xe.Attribute("name").Value;
d.bdate = xe.Attribute("bdate").Value;
IDictionary<string, object> dict = d;
foreach (var xa in xe.Elements("attr"))
dict[xa.Attribute("name").Value] = xa.Attribute("value").Value;
public static void Main()
<object name=""allah"" bdate=""00.00.00"">
<attr name=""hui"" value=""0""/>
<attr name=""pizda"" value=""1.5""/>
<attr name=""jigurda"" value=""lol""/>
<object name=""erokhin"" bdate=""01.01.1995"">
<attr name=""hui"" value=""30""/>
<attr name=""iq"" value=""10""/>
<attr name=""car"" value=""bmw""/>
var root = XElement.Parse(xml);
var rows = root.Elements("object").Select(ParseObject).ToList();