如何连接字符串与十进制
本文关键字:字符串 十进制 连接 何连接 | 更新日期: 2023-09-27 18:12:12
我在tbl_BillingTerm中有两列
- BTTitle (VARCHAR (MAX)
- 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();
}
我想要连接Title和Bill,正如我使用LINQ编码的那样。它正在生成一个错误:
> "Unable to cast the type 'System.Decimal' to type 'System.Object'.
LINQ to Entities only supports casting EDM primitive or enumeration types."
代替do,
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来获取数据,然后使用链接到对象进行笨拙的字符串操作。
ToList()
之后的内容将不会被EF提供程序解释。
或者,如果您真的想在服务器端执行此操作,您可以尝试,
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函数。
从int型到字符串型的转换没有映射到规范函数
如果这个错误阻止你继续,并且是一个小数据集,你可以通过枚举查询(调用ToList
)来从数据库中检索。从那时起,你的操作将针对内存中的对象,你可能不会遇到你收到的错误。
using (var db = new ClothEntities())
{
var result = (from bterm in db.tbl_BillingTerm
select new
{
bterm.BTId,
bterm.BTTitle,
bterm.BTBill
}).ToList();
var data = result.Select(bterm => new
{
bterm.BTId,
BillingTerm = string.Format(
"{0} {1}: USD/month",
bterm.BTTitle,
bterm.BTBill)
});
}