Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Union时出现匿名类型错误_C#_Linq - Fatal编程技术网

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 });