【发布时间】:2010-11-07 04:41:24
【问题描述】:
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 中使用第一个 sn-p 没有问题,它工作得很好,VB 很灵活,我无法习惯 C# 的严格性!!!
【问题讨论】:
-
.ToString() 也不适用于 VB 中的 LinqToEF。恕我直言,有点愚蠢。
-
@StingyJack,问题出在 ELINQ(linq 2 实体),因为它将您的代码转换为 SQL,当涉及到内部 ToString 请求时,它不知道如何翻译 ' ToString' 到 SQL。与 linq 2 对象不同,当没有翻译并且一切都是 CLR lambdas 时,它会直接在请求的对象上执行。
-
我只是对他们允许编译这种错误感到恼火,而且我不得不永远寻找一个简单的英文描述原因(没有法律和学术界) .
-
你是对的,但他们也是对的,他们不应该将所有 CLR 和自定义 CLR 功能转换为 SQL,尤其是在早期版本的 EF 中:) ToString,阅读 Brian 的回答:stackoverflow.com/questions/1066760/…
-
很好,但是使用 3.5 而不是 4 的人呢?然后呢?
标签: c# asp.net linq-to-entities tostring