如何将Linq中的int转换为实体中的字符串

时间:2011-11-17 06:14:21

标签: c# linq

我在字符串(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();

4 个答案:

答案 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