我正在尝试使用Union
,我的变量类型是十进制的。我得到以下例外:
实例参数:无法转换为'
System.Linq.IQueryable<AnonymousType#1>
&#39;到&#39;System.Linq.ParalelQuery<AnonymousType#2>
&#39;
代码:
queryResults = (from lI in Entities.LI
select new { lI, lI.abc })
.Union(from lI in Entities.LI
from R in Entities.RL
where lI.oid == R.lIOid
select new { lI, R.Quantity });
答案 0 :(得分:5)
错误消息告诉您确切的问题所在。您无法将一种匿名类型转换为另一种类型。
你有这个作为你的第一个选择陈述:
select new { lI, lI.abc }
这是你的第二个:
select new { lI, R.Quantity }
这些产生两个不同的对象,第一个有lI
加上一个字符串。第二个是&#39; lI`和一个数值。
试试这个:
select new { lI, lI.abc, 0 }
和
select new { lI, "", R.Quantity }
答案 1 :(得分:3)
只要类型相同,您就可以Union
两个匿名类型。这包括字段名称。在您的情况下,第一种类型是{lI, abc}
,第二种类型是{lI, Quantity}
,因此合并它们将无效。您需要决定一个名称, - Quantity
,abc
或完全不同的名称。
假设它们的类型已经相同,那么为两个字段赋予相同的名称将解决问题:
queryResults = (from lI in Entities.LI
select new { lI, Quantity = lI.abc }) // <<== Added "Quantity ="
.Union(from lI in Entities.LI
from R in Entities.RL
where lI.oid == R.lIOid
select new { lI, R.Quantity });