我在尝试连接查询中的多个表时遇到错误:
指定的LINQ表达式包含对与不同上下文关联的查询的引用
它令人困惑,因为它使我看起来在查询中使用不同的上下文但我不是:
public static IQueryable<Company> GetAll(bool supportsMMAT)
{
return from c in Context.Companies
join v in Context.Vehicles on c.CompanyIdNumber equals v.CompanyIdNumber
join mt in Context.ModemTypes on v.ModemTypeId equals mt.Id
where !c.CompanyShutOff
&& (!supportsMMAT || mt.Model == "MMAT")
select c;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我正在使用EF4 CTP5代码第一种方法,如果这有任何区别......
我有 2 个 var/objects,通过这两个函数检索:
private IQueryable<Project> SelectAll_1(...)
{
return query;
}
Run Code Online (Sandbox Code Playgroud)
类项目是:
private int ID;
private string col1;
private string col2;
private string col3;
Run Code Online (Sandbox Code Playgroud)
另一个:
private IQueryable<Project_test> SelectAll_2(...)
{
return query;
}
Run Code Online (Sandbox Code Playgroud)
其中 POCO 是:
private string ID_inString;
private string col1;
private string col2;
private string col3;
Run Code Online (Sandbox Code Playgroud)
我需要对他们两个进行联合,
var P2 = SelectAll_2(...);
var P1 = SelectAll_1(...);
var P3 = P2.Union(P1);
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误,提到:
无法从用法推断方法“System.Linq.Queryable.Union(System.Linq.IQueryable, System.Linq.Expressions.Expression>)”的类型参数。尝试明确指定类型参数。
我看到有些人通过匿名类型解决它,但我不确定它是如何工作的。任何人有任何想法?