Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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
C# 在服务器解析中,Decimal给出了错误的数字_C# - Fatal编程技术网

C# 在服务器解析中,Decimal给出了错误的数字

C# 在服务器解析中,Decimal给出了错误的数字,c#,C#,在我的申请中。我正在解析excel,在excel中我正在解析一个十进制数。我使用OleDbConnection来解析excell。当我在本地主机上运行时,解析和转换为十进制是正确的,但在服务器上它给出了错误的数字。它不接受分隔符,所以数字更大 using (var conn = new OleDbConnection(connectionString)) { conn.Open(); process = "Bağlantı açıldı"; var sheets = conn.GetOleDbS

在我的申请中。我正在解析excel,在excel中我正在解析一个十进制数。我使用OleDbConnection来解析excell。当我在本地主机上运行时,解析和转换为十进制是正确的,但在服务器上它给出了错误的数字。它不接受分隔符,所以数字更大

using (var conn = new OleDbConnection(connectionString))
{
conn.Open();
process = "Bağlantı açıldı";
var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
using (var cmd = conn.CreateCommand())
{
    cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";
    var adapter = new OleDbDataAdapter(cmd);
    var ds = new DataSet();
    adapter.Fill(ds);
    conn.Close();

    #region scope parse
    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
    new TransactionOptions()
    {
        IsolationLevel = System.Transactions.IsolationLevel.Serializable,
        Timeout = TimeSpan.FromSeconds(24000)
    }))
    {
        var context = new Entities2();
        // düzenle

        FNC_INVESTMENT_PERIOD_ACTUAL actual = new FNC_INVESTMENT_PERIOD_ACTUAL();
        decimal id = 0;
        List<FNC_INVESTMENT_PERIOD_ACTUAL> ActualDatas = new List<FNC_INVESTMENT_PERIOD_ACTUAL>();
        foreach (DataRow element in ds.Tables[0].Rows)
        {
            FNC_INVESTMENT_ACTUAL_DETAIL detail = new FNC_INVESTMENT_ACTUAL_DETAIL();
            string query = "select FNC_SEQ_ACTUAL_DETAIL.NEXTVAL from DUAL";
            var query_result = context.Database.SqlQuery<decimal>(query);
            decimal newId = query_result.First();
            detail.ID = newId;
            detail.REFACTUALCODE = id;
            detail.DOCNO = element[1].ToString();
            detail.DOCDATE = Convert.ToDateTime(element[2]);
            detail.AMOUNT = Convert.ToDecimal(element[4]);
            context.FNC_INVESTMENT_ACTUAL_DETAIL.Add(detail);
            context.SaveChanges();

        }
        scope.Complete();
    }
    #endregion
}
1.547,07这个数字返回154707,因此在服务器中给出了一个大数字

我怎样才能解决这个问题


提前感谢

您必须指定区域性:

Convert.ToDecimalelement[4]。替换“.”,“”,新的CultureInfo FR

有关详细信息,请阅读此Microsoft文档


您需要更改服务器计算机上的服务器区域设置

什么是元素[4]。GetType?元素[4]。ToString?指定?这不是一个好的解决方案。如果他部署到另一台机器上,最终会出现同样的问题。