如何将int转换为字符串在Linq到实体
本文关键字:Linq 实体 字符串 int 转换 | 更新日期: 2023-09-27 18:14:49
我的Db列在一个字符串(varchar),我需要将其分配给一个int值。我正在使用linq查询。虽然代码编译在运行时得到一个错误。提前谢谢。
PFB my query:
var vlauesCap = from plan in entities.PA_RTM_CAP_Group
select new Business.PartnerProfile.LookUp
{
Id =Convert.ToInt32(plan.cap_group_code),
//(Int32)plan.cap_group_code,
Value = plan.cap_group_name
};
return vlauesCap.ToList();
EF提供程序不知道如何将Convert.ToInt()
转换为可以在数据库上运行的SQL。不需要在服务器上进行转换,您可以将结果拉回来,并使用linq到对象进行转换:
// the ToList() here causes the query to be executed on the server and
// the results are returned in a list of anonymous objects
var results = (from plan in entities.PA_RTM_CAP_Group
select new
{
Code = plan.cap_group_code,
Name = plan.cap_group_name
}).ToList();
// the conversion can now be done here using Linq to Objects
var vlauesCap = from r in results
select new Business.PartnerProfile.LookUp
{
Id = Convert.ToInt32(r.Code),
Value = r.Name
};
return vlauesCap.ToList();
你不能直接这样做,你可以做的是声明一个私有变量来处理你的"映射"值,并公开未映射的属性…
[Column(Name = "cap_group_code", Storage = "m_cap_group_code")]
private string m_cap_group_code;
public int cap_group_code {
get
{
return Int32.Parse(m_cap_group_code);
}
set
{
m_cap_group_code = value.ToString();
}
}
试试这个:
var vlauesCap = from plan in entities.PA_RTM_CAP_Group
select new Business.PartnerProfile.LookUp
{
Id =Convert.ToInt32(plan.cap_group_code),
Convert.ToInt32(plan.cap_group_code),
Value = plan.cap_group_name
};
return vlauesCap.ToList();
为什么不使用强制转换来达到这样的目的,这是一种更有效的实现方法。
将Convert.ToInt32(plan.cap_group_code)
替换为(int)plan.cap_group_code
请记住,字符串中应该有一个值,并且是int,否则将显示异常。如果不确定,则可以进一步扩展强制转换,使用空合并操作符