String.Split в запросе Linq-To-SQL?

У меня есть таблица базы данных, содержащая такой столбец nvarchar:

1|12.6|18|19

У меня есть бизнес-объект со свойством Decimal [].

Мой запрос LINQ выглядит следующим образом:

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();

Это вызывает исключение NotSupportedException: Метод System.String [] Split (Char []) »не поддерживает преобразование в SQL.

Это отстой :) Есть ли способ сделать это, не добавляя строковое свойство к бизнес-объекту или выбирая анонимный тип, а затем просматривая его?

Мое текущее «решение»:

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[]

] Это довольно уродливо с этим временным списком.

Я пробовал добавить let mv = r.MeterValues.Split ('|'). Select (Decimal.Parse) .ToArray () , но это по существу приводит к тому же исключению NotSupportedException.

Это .net 3.5SP1, если это важно.

9
задан Michael Stum 29 November 2010 в 00:40
поделиться