Shweta
Shweta

Reputation: 129

how to convert int to string in Linq to entities

My Db column in a string (varchar) and i need to assign it to a int value. I am using linq to query.Though the code compiles am getting an error at the run time . Thanks in advance.

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();

Upvotes: 3

Views: 6712

Answers (4)

jmoreno
jmoreno

Reputation: 13571

You can't do this directly, what you can do is declare a private variable to handle your "mapped" value, and expose the unmapped property...

[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();
    }
}

Upvotes: 1

Jeff Ogata
Jeff Ogata

Reputation: 57823

The EF provider does not know how to translate Convert.ToInt() into SQL it can run against the database. Instead of doing the conversion on the server, you can pull the results back and do the conversion using linq to objects:

// 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();  

Upvotes: 7

Pankaj Upadhyay
Pankaj Upadhyay

Reputation: 13594

Why aren't you using casting for such a purpose, which is a more effective way of achieving this.

Just replace Convert.ToInt32(plan.cap_group_code) with (int)plan.cap_group_code

Do remember, there should be a value in the string and is int, else it will show Exception. If you are not sure about it, then you can further expand the casting to use null coalesciting operator

Upvotes: -2

flipchart
flipchart

Reputation: 6578

Try this:

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();

Upvotes: 0

Related Questions