【问题标题】:Error in Entity framework query (Missing cast)实体框架查询中的错误(缺少演员表)
【发布时间】:2013-04-06 02:05:21
【问题描述】:
public List<ProjectImpacts> getProjectImpactsByProjeactIDAndImpactName(String prefe , String impcName)
{ 
    String xim =  cecbContext.Impacts.First(i=>i.impt_name.Contains(impcName)).impt_reference;

    IQueryable<ProjectImpacts> query = from c in cecbContext.ProjectImpacts
            join b in cecbContext.Impacts on c.impt_reference equals b.impt_reference             
            where c.proj_reference == prefe && c.impt_reference == xim
            select b.impt_name;

    List<ProjectImpacts> SelectedImpacts = query.ToList(); //query.Select(refe => new ProjectImpacts { impt_reference =   }).ToList();

    return SelectedImpacts;
}

我在此查询中遇到错误:

无法将类型“System.Linq.IQueryable”隐式转换为“System.Linq.IQueryable”。存在显式转换(您是否缺少演员表?)

【问题讨论】:

    标签: c# sql entity-framework


    【解决方案1】:

    这是因为您的查询在末尾选择了一个名称:

    IQueryable<ProjectImpacts> query = from c in cecbContext.ProjectImpacts
        join b in cecbContext.Impacts on c.impt_reference equals b.impt_reference             
        where c.proj_reference == prefe && c.impt_reference == xim
        // select b.impt_name; // <<== Replace this...
        select c;              // <<== with this.
    

    泛型IQueryable&lt;T&gt;的类型参数T对应于查询中选择的对象的类型。由于您选择了name(可能是string),因此您得到了IQueriable&lt;string&gt;。一旦你选择了c,也就是ProjectImpacts,你会得到IQueryable&lt;ProjectImpacts&gt;作为你的结果

    【讨论】:

    • @Gayashan 看起来ProjectImpactsc,而不是bbImpacts。尝试更改后的查询,看看是否有帮助。
    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多