我有一個包含這樣一個nvarchar列數據庫表:Linq-To-SQL查詢中的String.Split?
1|12.6|18|19
我有,有一個十進制數[]屬性的業務對象。
我的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如果有問題。
這是否選擇整個SomeTable表? – 2010-11-29 00:34:30