Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPMETAL/LINQ到SharePoint十进制类型_Linq_Sharepoint_Linq To Sharepoint_Spmetal - Fatal编程技术网

SPMETAL/LINQ到SharePoint十进制类型

SPMETAL/LINQ到SharePoint十进制类型,linq,sharepoint,linq-to-sharepoint,spmetal,Linq,Sharepoint,Linq To Sharepoint,Spmetal,我遇到了一个相当大的障碍,由spmetal/linq到sharepoint生成的实体。我希望以前有人处理过这件事。。或者我错过了一些明显的东西 假设我们有一个带有数字字段的列表。预计该字段将保持合理的精确值。。例如,0.0000451。一旦该值出现在列表中,SharePoint就可以使用它了。它将显示在列表中并正确显示/编辑视图 现在,如果我们使用spmetal基于此列表生成实体,我们将得到 //... private System.Nullable<double> _number;

我遇到了一个相当大的障碍,由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");
        }
    }
}
//...
这个数字实际上会导致
4.51E-05
,而不是
0.0000451

我假设这可以通过使用十进制来修正。如果我将整个生成的实体中的类型更改为
System.Nullable
,则类型转换失败

我该如何解决这个问题


编辑我想也许最好问一下“我应该如何处理这个问题”?例如,稍后我可以简单地将我的双精度值转换为十进制。。例如,我的linq查询。如果我这样做,示例案例将返回预期结果。不过,这似乎有些笨拙,我想从源头上纠正这一点

4.51E-05
实际上等于
0.0000451
,因此您的代码没有问题


换句话说,
4.51E-05
表示4.51乘以10的负五次方,或
0.0000451

有几种情况下,SPMetal会给你笨重的代码。你可以,有时也必须,解决这个问题。我承认,从源头上做这件事肯定感觉更好。 但也有不利的一面

当您的数据模型发生更改时,您必须重新运行SPMetal以合并新实体。对生成的文件所做的任何更改都必须仔细记录并重新执行,否则代码将被破坏。因此,如果可以使用生成的代码,我建议不要使用它


如果您可以围绕对象/方法编写一个包装器,那么当然比只在端点转换类型更好,但这是一般的良好编程实践。

不,我明白了。我想弄明白的是,在处理数字时,如何正确地显示它。
var number = (from x in myDc.MyList select x.Number).First();