如何将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();

如何将int转换为字符串在Linq到实体

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,否则将显示异常。如果不确定,则可以进一步扩展强制转换,使用空合并操作符