防止数字在 linq-to-sql 中转换为 Scientifc 表示法



我有一个从数据库中获取数据的查询。我有一个 DTO,其中包含类型 string 的属性Price

var query = (from Users in _db.Users 
join pricing in _db.Prices
select new {
Username = Users.Name,
Price = pricing.Currency + " " + pricing.Amount
} ).AsEnumerable().Select(x => new UsersPrice 
{
Username = x.Username,
Price = x.Price
});

请注意,pricing.Amount在我的实体中是双精度类型,SQL 服务器中的字段是浮点型。

数据库中的实际金额/值是12 565 467但在上面的查询中,它返回我为1.25655e+007。我怎样才能防止这种情况?我希望返回数据库中的实际值。请帮忙。

数据库中的实际值是一个数字。数字不包括格式 - 它们只是数字。格式唯一相关的时间是当您将其转换为字符串时,即

Price = pricing.Currency + " " + pricing.Amount

所以;如果格式对你很重要,你必须告诉它你想要什么格式,通常是通过使用ToString()指定特定的格式和文化。

为了防止该工具尝试将其转换为 TSQL(这将不起作用(,您可能希望将"获取数据"部分与"格式化数据"部分分开,即

var query = (from Users in _db.Users 
join pricing in _db.Prices
select new {
    Username = Users.Name,
    pricing.Currency, pricing.Amount
}).AsEnumerable().Select(x => new UsersPrice 
{
    Username = x.Username,
    Price = x.Currency + " " + x.Amount.ToString(...) // your choices here
});

这里的相关位是在 ORM 查询中我刚刚选择了列,在AsEnumerable()之后,我有了格式化它们的代码。