Asp.net c#,无法创建类型' System.Object'的常量值。

时间:2015-06-18 14:22:20

标签: c# asp.net linq

var result = from q in memberDbSet
     select new
     {
         no = q.no,
         fullName = q.firstName + ' ' + q.lastName
     };
  

无法创建类型' System.Object'的常量值。只要   在此上下文中支持原始类型或枚举类型。

我遇到了上述错误,我做错了什么?

2 个答案:

答案 0 :(得分:2)

这是因为LINQ提供程序无法将q.firstName + ' ' + q.lastName表达式转换为SQL。解决此问题的方法是调用AsEnumerable()将数据存入内存,并在那里进行剩余的选择:

var result = (from q in memberDbSet /* where clause goes here */)
   .AsEnumerable()
   . Select(q => new {
        no = q.no,
        fullName = q.firstName + ' ' + q.lastName
   });

确保在AsEnumerable()之前将所有过滤放入查询中,以避免向内存中读取超出您需要的数据。

答案 1 :(得分:1)

您正在连接字符串和char。显然,实体框架并不是那样的。将其改为

fullName = q.firstName + " " + q.lastName

唯一的是,我原本预计

  

无法创建类型为System.Char'

的常量值