Вам нужно разбить это на две части: сначала получить данные из базы данных, а затем преобразовать данные за пределы этого запроса. Вы можете использовать автоматически сгенерированные итераторы в C #, чтобы помочь:
public IEnumerable<Models.Powerups.Powerup> GetPowerups(Guid userid)
{
// Create the serializer here.
DataContractSerializer s = new DataContractSerializer(typeof(Models.Powerups.Powerup));
// Iterate through the powerups.
foreach (var p in dc.Powerups)
{
// Create the string reader, xml reader, then deserialize and return
// instance.
using (StringReader stringReader = new StringReader(p.Data))
using (XmlTextReader xmlTextReader = new XmlTextReader(stringReader))
{
// Return the deserialized instance.
yield return (Models.Powerups.Powerup) s.ReadObject(xmlTextReader);
}
}
}
Самое замечательное в этом то, что он допускает и отложенное выполнение.