【问题标题】:Prevent number from being converted to Scientifc Notation in linq-to-sql防止数字在 linq-to-sql 中转换为科学记数法
【发布时间】:2019-04-03 10:06:04
【问题描述】:

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

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。我怎样才能防止这种情况?我希望返回数据库中的实际值。请帮忙。

【问题讨论】:

    标签: c# linq linq-to-sql


    【解决方案1】:

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

    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() 之后我有代码 格式化它们。

    【讨论】:

    • 谢谢马克先生。太棒了!
    猜你喜欢
    • 2022-10-10
    • 2019-03-24
    • 2020-10-28
    • 2016-02-21
    • 1970-01-01
    • 2021-12-23
    • 2016-05-17
    • 1970-01-01
    • 2020-06-10
    相关资源
    最近更新 更多