Search code examples
c#asp.netlinq-to-entitiestostring

Problem with converting int to string in Linq to entities


var items = from c in contacts
            select new ListItem
            {
                Value = c.ContactId, //Cannot implicitly convert type 'int' (ContactId) to 'string' (Value).
                Text = c.Name
            };
var items = from c in contacts
            select new ListItem
            {
                Value = c.ContactId.ToString(), //Throws exception: ToString is not supported in linq to entities.
                Text = c.Name
            };

Is there anyway I can achieve this? Note, that in VB.NET there is no problem use the first snippet it works just great, VB is flexible, im unable to get used to C#'s strictness!!!


Solution

  • With EF v4 you can use SqlFunctions.StringConvert. There is no overload for int so you need to cast to a double or a decimal. Your code ends up looking like this:

    var items = from c in contacts
                select new ListItem
                {
                    Value = SqlFunctions.StringConvert((double)c.ContactId).Trim(),
                    Text = c.Name
                };