c# - 如何将字符串与小数连接起来?

标签 c# sql linq

我在 tbl_BillingTerm 中有 2 列

  1. BTTitle (VARCHAR(MAX))
  2. BTBill(钱)

using (var db = new ClothEntities())
{
    var data = (from bterm in db.tbl_BillingTerm
                select new
                {
                    bterm.BTId,
                    BillingTerm = bterm.BTTitle +""+ bterm.BTBill+": USD/month"
                }).ToList();
}

我想连接标题和账单,如我使用 LINQ 编码所示。 它生成一个错误:

> "Unable to cast the type 'System.Decimal' to type 'System.Object'.
   LINQ to Entities only supports casting EDM primitive or enumeration types."

最佳答案

相反,

using (var db = new ClothEntities())
{
    var raw = (from bterm in db.tbl_BillingTerm
                select new
                {
                    bterm.BTId,
                    bterm.BTTitle,
                    bterm.BTBill
                }).ToList();

    var data = raw.Select(bterm => new
        {
            bterm.BTId,
            BillingTerm = string.Format(
                "{0} {1}: USD/month",
                bterm.BTTitle,
                bterm.BTBill)
        });
}

本质上,使用 EF 获取数据,然后使用 linq-to-objects 进行笨拙的字符串操作。

EF 提供程序不会解释 ToList() 之后的所有内容。


或者,如果你真的想做这个服务器端,你可以尝试,

using (var db = new ClothEntities())
{
    var data = (from bterm in db.tbl_BillingTerm
         select new
         {
             bterm.BTId,
             BillingTerm =
                 bterm.BTTitle + " " + 
                 SqlFunctions.StringConvert(bterm.BTBill) 
                 + ": USD/month")
         });
}

这使用 SQLFunctions EF 提供程序应将其映射到适当的规范 TSQL 函数的类。

在这种情况下,我认为第二种方法没有什么值(value)。上面的拆分解决方案会导致将更密集的结果集传输到客户端。进程间通信的成本可能比结果的第二次迭代要高得多。

关于c# - 如何将字符串与小数连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24670903/

相关文章:

MySQL重复具有不同ID的行

C# 如何创建代码以使用按钮单击事件将表单设置回默认属性?

c# - 仅对 KeyPress 事件中的文本输入起作用

sql - 将 IF EXIST(SELECT 1 FROM ) 更改为 IF EXIST(SELECT TOP 1 FROM ) 是否有任何副作用?

mysql - 使用子查询时 WHERE 子句中的未知列

c# - 当大多数项目访问的数据库具有我无法更改的糟糕模式时,我如何对我的项目进行单元测试?

c# - 使用连接字符串连接到数据库以使用 LINQ

c# - 在 ASP.net Web API 中设置 Owin 缓存控制 header

c# - IList<T>、IEnumerable<T> 和 ObservableCollection<T>

c# - 按月将一个列表拆分为多个 - C#、Linq