【问题标题】:How to change decimal separator in ExecuteReader c#如何在 ExecuteReader c# 中更改小数点分隔符
【发布时间】:2021-06-29 15:58:08
【问题描述】:

如何更改字符串中的小数点分隔符,例如在 mnoz_obj 项目中,返回值为 24,000,我需要 24.000。这些值是从数据库到 JSON。 我试过 ToString(new CultureInfo etc.) 但这不起作用。我希望 myString.Replace(",",".") 不是正确的方法。

public static string getDoklad()
        {
            var dbCon = ConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
            string[] fileArguments = Environment.GetCommandLineArgs();
            List<ZebraPolozky> zebraPolozky = new List<ZebraPolozky>();
            using (var cn = new OdbcConnection(dbCon))
            {
                OdbcCommand cmd = cn.CreateCommand();
                cmd.CommandText = "SELECT * FROM cis06zebrap";
                cn.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            ZebraPolozky zebraPolozka = new ZebraPolozky
                            {
                                doklad = reader["doklad"].ToString(),
                                sklad = reader["sklad"].ToString(),
                                reg = reader["reg"].ToString(),
                                mnoz_obj = reader["mnoz_obj"].ToString(),
                                mnoz_vyd = reader["mnoz_vyd"].ToString(),
                                kc_pce = reader["kc_pce"].ToString(),
                                sarze = reader["sarze"].ToString(),
                                datspo = reader["datspo"].ToString(),
                                veb = reader["veb"].ToString(),
                                poc2 = reader["poc2"].ToString(),
                                pvp06pk = reader["pvp06pk"].ToString(),
                                znacky = reader["znacky"].ToString(),
                                stav = reader["stav"].ToString(),
                                //prac = reader["prac"].ToString(),
                                //exp = reader["exp"].ToString()
                            };
                            zebraPolozky.Add(zebraPolozka);
                        }
                    }
                }
                cn.Close();
            }
            //var collw = new { polozky = zebraPolozky };
            var jsonString = JsonConvert.SerializeObject(zebraPolozky);
            return jsonString;
        }

{
    "doklad": "568375",
    "sklad": "901",
    "reg": "185121",
    "mnoz_obj": "24,000",
    "mnoz_vyd": "0,000",
    "kc_pce": "240,72",
    "sarze": "",
    "datspo": "",
    "veb": "24,00",
    "poc2": "1",
    "pvp06pk": "116783437",
    "znacky": "R1902",
    "stav": "0"
  }

【问题讨论】:

  • reader["mnoz_obj"] 返回一个 object 但读者应该给出它的原始类型。如果是decimal,只需转换它并使用您需要的 .ToString() 重载。

标签: c# .net decimal executereader


【解决方案1】:

OdbcDataReaderdoc 中所述的原始格式给出值。

然后您应该能够转换它并使用您需要的 .ToString() 的重载。

尝试类似:

((decimal)reader["mnoz_obj"]).ToString("N2")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多