我碰到了一個相當重要的障礙,由spmetal/linq生成的實體共享點。我希望以前有人處理過這個問題..也許我錯過了一些明顯的東西。SPMETAL/LINQ到SharePoint十進制類型
比方說,我們有一個數字字段列表。預計該字段將保持合理的精確值。例如,0.0000451
。一旦該值在列表中 - SharePoint就可以了。它顯示在列表中並正確顯示/編輯視圖。
現在,如果我們根據這個名單與spmetal上產生的實體,我們將獲得..
//...
private System.Nullable<double> _number;
//..
[Microsoft.SharePoint.Linq.ColumnAttribute(Name="Number", Storage="_number", Required=true, FieldType="Number")]
public System.Nullable<double> Number {
get {
return this._number;
}
set {
if ((value != this._number))
{
this.OnPropertyChanging("Number", this._number);
this._number= value;
this.OnPropertyChanged("Number");
}
}
}
//...
因爲由spmetal確定的類型是double
試圖找回它,當我們得到的符號。例如:
var number = (from x in myDc.MyList select x.Number).First();
數字實際上會導致雙倍的4.51E-05
而不是0.0000451
。
我假設這可以通過使用小數來解決。如果我將整個生成的實體的類型更改爲System.Nullable<decimal>
,則會發生類型轉換失敗。
我該如何解決這個問題?
編輯我想也許最好是問「我應該如何處理這個」?例如,我可以簡單地將我的雙精度值轉換爲小數點後的值,例如,我的linq查詢。如果我這樣做,示例情況會返回預期結果。不過,這看起來很笨重,我想從源頭上糾正這一點。
不,我明白了。我想弄清楚的是如何在處理數字時正確顯示它。 – mikeds