У меня есть таблица базы данных, которая содержит такой столбец 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: Method 'System.String[] Split(Char[])' has no supported translation to 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, если это имеет значение.