【发布时间】:2014-11-24 14:48:20
【问题描述】:
我只需要使用 Linq 进行完全外连接,但是当我合并两个查询时,我得到了这个错误:
实例参数:无法从“System.Linq.IQueryable”转换为“System.Linq.ParallelQuery”
这是我的完整代码:
using (GoodDataBaseEntities con = new GoodDataBaseEntities())
{
var LeftOuterJoin = from MyCustomer in con.Customer
join MyAddress in con.Address
on MyCustomer.CustomerId equals MyAddress.CustomerID into gr
from g in gr.DefaultIfEmpty()
select new { MyCustomer.CustomerId, MyCustomer.Name, g.Address1 };
var RightOuterJoin = from MyAddress in con.Address
join MyCustomer in con.Customer
on MyAddress.CustomerID equals MyCustomer.CustomerId into gr
from g in gr.DefaultIfEmpty()
select new { MyAddress.Address1, g.Name };
var FullOuterJoin = LeftOuterJoin.Union(RightOuterJoin);
IEnumerable myList = FullOuterJoin.ToList();
GridView1.DataSource = myList;
GridView1.DataBind();
}
【问题讨论】:
-
Union 期望 IEnumerables 具有相同的类型 - 您的 IEnumerables 不是同一类型。不能这样使用联合。
-
您正在合并具有不同属性的两种不同对象类型,这是行不通的。如果将
MyAddress.CustomerID添加到第二个匿名返回类型以使属性匹配,我不知道编译器有多聪明。 -
LeftOutterJoins with LINQ 一个简单的网络搜索会产生大量的结果/示例
标签: c# asp.net sql-server linq entity-framework