Deserializing multiple elements from XElement I'm serializing multiple elements using this code:

public IEnumerable&lt;Customer&gt; GetCustomers(xmlString)
{
  var xml = XElement.Parse(xmlString);
  var customers = xml.Elements("Customer");
  var serializer = new XmlSerializer(typeof(Customer));
  return customers.Select(c =&gt;
  {
    using (var reader = c.CreateReader())
      return (Customer)serializer.Deserialize(reader);
  });
}


I have this hunch that CreateReader is an expensive one, so:


Is there a way to serialize multiple elements out a collection of elements (without creating a Customers class)?
Do I need to dispose all those readers?
Any other way to read directly from XElement (should I use string)?


Update
I've initially asked the question with this code:

public IEnumerable&lt;Customer&gt; GetCustomers(xmlString)
{
  var xml = XElement.Parse(xmlString);
  var customers = xml.Elements("Customers");
  var serializer = new XmlSerializer(typeof(Customer));
  return customers.Select(c =&gt; (Customer)serializer.Deserialize(c.CreateReader()));
}
Your initial revision is fine. If you take a look at the implementation at Reference Source you'll see that the XmlReader returned by CreateReader is lightweight and that calling Dispose on it is not necessary. 



...
var customers = xml.Elements("Customers");
...


It seems a little strange that you pick elements of type "Customers" and deserialize them as Customer. They should be "Customer" in the XML if they represent a single customer each.