我正在运行查询以在单个选择下拉菜单中填充选项。当我调试下面的函数时,查询变量包含我期望的结果集。然而,当我跳到它应该返回的地方时,我得到了错误:
'The entity type or complex type 'Models.zz_Member' cannot be constructed in a LINQ to Entities query."
public IQueryable<zz_Member> GetMembers(string searchText)
{
var _db = new Portal.Models.AuthorizationContext();
IQueryable<zz_Member> query = _db.zz_Members;
return query //.Where(a => a.memLastName.Contains(searchText))
.Select(a => new zz_Member()
{
ID = a.ID,
memFirstName = a.memFirstName,
memLastName = a.memLastName
}
);
}
zz_Member 模型对象定义为:
public class zz_Member
{
[ScaffoldColumn(false)]
public int ID { get; set; }
public string memFirstName { get; set; }
public string memLastName { get; set; }
}
当我尝试转换为 IList 时抛出错误,但是当我使用调试器检查 memList 的值时,它会在结果 View 中显示错误文本。
IQueryable<zz_Member> memList = GetMembers(e.Text);
IList<zz_Member> memList2 = memList.ToList();
我还尝试编写 GetMembers 函数来返回列表:
public IList<zz_Member> GetMembers(string searchText)
{
var _db = new WWCPortal.Models.AuthorizationContext();
return (from m in _db.zz_Members
where m.memLastName.Contains(searchText)
select new zz_Member { ID = m.ID, memFirstName = m.memFirstName, memLastName = m.memLastName }).ToList();
}
关于为什么结果集似乎没有返回给调用者并放入 memList 的任何提示或答案?谢谢。
最佳答案
您不能在投影中使用框架相关/生成的实体(使用 select new
),因此会出现错误。
看起来您正在尝试选择特定列而不是所有列,您的选项是
- 与那些 特定成员一起设计一个新类(class)
- 返回您实体的所有字段/列,例如:
代码:
return query.Where(a => a.memLastName.Contains(searchText)); //without `select new`
关于c# - 返回 IQueryable 类型 : The entity or complex type '' cannot be constructed in a LINQ to Entities query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238546/