该查询包含对在不同数据上下文中定义的项的引用

gan*_*gan 6 linq

在联合之后,我有来自相同数据库的2个变量:

var projectedP1 = P1.Select(x => new Project_test { 
                                     ID_inString = x.ID.ToString(), 
                                     col1 = x.col1, 
                                     col2 = x.col2, 
                                     col3 = x.col3 });
var union = projectedP1.Union(P2);
Run Code Online (Sandbox Code Playgroud)

当P1单独或P2单独,一切都很好但是当2是联合时,我在运行时得到这个:

该查询包含对在不同数据上下文中定义的项的引用.

我试过这个类似的帖子,但是不明白.你有什么想法吗?

指定的LINQ表达式包含对与不同上下文关联的查询的引用

Bri*_*ins 10

你永远不能从两个不同的上下文中加入对象; 因为union被编译成数据库查询,所以它不知道如何执行它,因为不支持多个DB.您可以做的最好的事情是分别在每个查询上调用ToList(),这将执行数据库查询,并执行LINQ到对象的并集.这完全是一个迭代过程.

  • 你不需要调用ToList - 只需AsEnumerable就可以:`P1.AsEnumerable().Union(P2)`. (6认同)