在Linq to entities中将int类型转换为字符串出现问题

27 浏览
0 Comments

在Linq to entities中将int类型转换为字符串出现问题

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
            };

有没有任何方式可以实现这一点?

请注意,在VB.NET中使用第一个代码片段没有任何问题,它完美地工作,VB很灵活,我无法习惯C#的严格性!

admin 更改状态以发布 2023年5月20日
0
0 Comments

我通过将整数转换为字符串放在查询之外来解决类似的问题。这可以通过将查询放入对象中来实现。

var items = from c in contacts
            select new 
            {
                Value = c.ContactId,
                Text = c.Name
            };
var itemList = new SelectList();
foreach (var item in items)
{
    itemList.Add(new SelectListItem{ Value = item.ContactId, Text = item.Name });
}

0
0 Comments

使用EF v4,你可以使用SqlFunctions.StringConvert。由于没有整数重载,因此需要将其转换为double或decimal。你的代码看起来像这样:

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

0