我想构建一个以点作为小数点分隔符的查询字符串,但我无法弄清楚应该如何/在哪里使用 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)
你能帮我吗?非常感谢。
要使用句点而不是逗号作为小数分隔符来格式化属性值,请调用 Convert.ToString 并传递不变区域性:
using System.Globalization;
...
select p.Name.ToLowerInvariant() + "=" + Convert.ToString(p.GetValue(person), CultureInfo.InvariantCulture)
您还应该调用 ToLowerInvariant 而不是 ToLower 以避免土耳其语“i”问题。