2013-04-06 34 views
1
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” 。一个显式转换存在(是否缺少强制转换?)

回答

3

这是因为你的查询选择在最后一个名字:

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<T>T对应的类型在查询中选择的对象。既然你选择了name(这大概是string),你得到了IQueriable<string>。一旦你选择c,即ProjectImpacts,你会得到IQueryable<ProjectImpacts>作为你的结果

+0

它仍然给我同样的错误? @dasblinkenlight – Gayashan 2013-04-06 02:23:11

+1

@Gayashan它看起来像'ProjectImpacts'是'c',而不是'b'; 'b'是'Impacts'。尝试更改后的查询,看看它是否有帮助。 – dasblinkenlight 2013-04-06 02:45:14