C# 使用Union时出现匿名类型错误
我正在尝试使用C# 使用Union时出现匿名类型错误,c#,linq,C#,Linq,我正在尝试使用联合,我的变量类型是decimal。我得到以下例外情况: 实例参数:无法从“System.Linq.IQueryable”转换为“System.Linq.ParalelQuery” 代码: queryResults = (from lI in Entities.LI select new { lI, lI.abc }) .Union(from lI in Entities.LI
联合
,我的变量类型是decimal。我得到以下例外情况:
实例参数:无法从“System.Linq.IQueryable
”转换为“System.Linq.ParalelQuery
”
代码:
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 });
错误消息会准确地告诉您问题所在。无法将一种匿名类型转换为另一种 您将此作为第一个select语句:
select new { lI, lI.abc }
这是你的第二个:
select new { lI, R.Quantity }
它们生成两个不同的对象,第一个对象包含lI
是加上字符串的内容。第二个有'lI'和一个数值
试试这个:
select new { lI, lI.abc, 0 }
以及:
您可以
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 });
queryResults=(来自Entities.lI中的lI
选择new{lI,Quantity=lI.abc})//如果数据类型相同,它会工作吗?“是吗?”斯图亚特,是的,应该是这样。我只是添加了一个可能的解决方案。您选择的答案(从以下两个答案中)将取决于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 });