我在字符串(varchar)中的Db列,我需要将它分配给一个int值。 我正在使用linq进行查询。虽然代码编译在运行时遇到错误。 提前谢谢。
PFB我的查询:
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();
答案 0 :(得分:7)
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();
答案 1 :(得分:1)
你不能直接这样做,你可以做的是声明一个私有变量来处理你的“映射”值,并公开未映射的属性......
[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();
}
}
答案 2 :(得分:0)
试试这个:
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();
答案 3 :(得分:-2)
为什么你不是为了这个目的使用铸造,这是实现这一目标的更有效方法。
只需将Convert.ToInt32(plan.cap_group_code)
替换为(int)plan.cap_group_code
请记住,字符串中应该有一个值并且是int,否则它将显示Exception。如果您不确定,那么您可以进一步扩展转换以使用null coalesciting operator