C# 中以点作为小数点分隔符的查询字符串

问题描述 投票:0回答:1

我想构建一个以点作为小数点分隔符的查询字符串,但我无法弄清楚应该如何/在哪里使用 CultureInfo 将逗号转换为 Account 属性值中的点。

Person person = new()
{
    Name = "Tom",
    Account = 1000.123m,
};

var properties = from p in person.GetType().GetProperties()
                 where p.GetValue(person, null) != null
                 select p.Name.ToLower() + "=" + p.GetValue(person);

Console.WriteLine(String.Join("&", properties.ToArray()));


class Person
{
    public string Name { get; set; } = String.Empty;
    public decimal Account { get; set; }
}

电流输出:

name=Tom&account=1000,123

预期输出:

name=Tom&account=1000.123

我想还有什么要补充的

 + p.GetValue(person)

你能帮我吗?非常感谢。

c# query-string cultureinfo
1个回答
0
投票

要使用句点而不是逗号作为小数分隔符来格式化属性值,请调用 Convert.ToString 并传递不变区域性:

using System.Globalization;

...

select p.Name.ToLowerInvariant() + "=" + Convert.ToString(p.GetValue(person), CultureInfo.InvariantCulture)

您还应该调用 ToLowerInvariant 而不是 ToLower 以避免土耳其语“i”问题。

© www.soinside.com 2019 - 2024. All rights reserved.