我需要根據標識圓FinalPrice以下幾種方式:LINQ到實體 - 舍入到最近的美元,最近的半美元,或完全不
- 0 =根本沒有;
- 1 =最多下一元
- 2 =最多到下一個半美元預計舍入的
實施例:
- ID 0:133.15 => 133.15
- ID 1:133.15 => 134.00
- ID 2:133.15 => 133.50
public IQueryable<MyObj> GetPrices()
{
int roundingId = 0; //0 = no rounding. 1 = dollar rounding. 2 = half-dollar rounding.
var prices = from ps in ObjectContext.Products
select new MyObj
{
FinalPrice = (ps.IsCustomPrice ? ps.CustomPrice : ps.Retail),
}
return prices;
}
我希望能使用自定義函數,以在LINQ to Entities中做這個取整操作...
這裏有什麼你的問題?如果你想讓它看起來流利,你可以創建一個擴展方法來循環小數(或者它們是否浮動?其他類型?),你希望它們在這裏舍入的方式。但是 - Math.Round()不會爲你開箱。 – 48klocs 2012-02-16 16:56:25
我不相信你可以在LINQ查詢中創建擴展方法。 CustomPrice和Retail屬性是小數。是的,我希望.Round()會爲我提供更多選擇。 – 2012-02-16 17:17:33
你可以在Linq查詢中做任何你想做的事情;如果你正在將Linq轉換爲實體/ Linq到SQL,那麼是的,你在查詢內部可以執行的操作有更多的限制。如果您將匿名類型轉換爲定義的類型,則可以在檢索數據後流暢地執行舍入。 – 48klocs 2012-02-16 17:27:46