Chaîne de caractères.Split dans une Linq-to-SQL de la Requête?

J'ai une table de base de données qui contient une colonne nvarchar comme ceci:

1|12.6|18|19

J'ai un Objet Métier qui a un nombre Décimal [la propriété].

Ma Requête LINQ ressemble à ceci:

var temp = from r in db.SomeTable select new BusinessObject {
    //Other BusinessObject Properties snipped as they are straight 1:1
    MeterValues = r.MeterValues.Split('|').Select(Decimal.Parse).ToArray()
};
var result = temp.ToArray();

Cela déclenche une NotSupportedException: Method 'System.String[] Split(Char[])' has no supported translation to SQL.

Qui suce plutôt 🙂 Est-il possible que je peux le faire sans avoir à ajouter une chaîne de propriété de l'objet de l'entreprise ou de sélectionner un type anonyme et puis en itérant à travers elle?

Ma "solution" est:

var temp = from r in db.SomeTable select new {
    mv = r.MeterValues,
    bo = new BusinessObject { //all the other fields }
};
var result = new List<BusinessObject>();
foreach(var t in temp) {
    var bo = t.bo;
    bo.MeterValues = t.mv.Split('|').Select(Decimal.Parse).ToArray();
    result.Add(bo);
}
return result.ToArray(); //The Method returns BusinessObject[]

C'est un peu laid mais, avec que temporaire de la liste.

J'ai essayé d'ajouter un let mv = r.MeterValues.Split('|').Select(Decimal.Parse).ToArray() mais que pour l'essentiel, conduit à la même NotSupportedException.

C'est .net 3.5SP1 si ce qui compte.

OriginalL'auteur Michael Stum | 2010-11-29