使用Linqpad计算我的查询,得到以上错误:
(from bp in basepay_records
select new { empID = bp.Prep_emp, loc = bp.Prep_loc }).Union
(
from ass in emp_assignments
select new { empID = ass.Prea_emp, loc = ass.Prea_loc }
)
我在第一个查询中使用和不使用paren尝试过它,没有差异。这个联合是一个更大的查询的一部分,这将最终坐在一个在连接中使用的子查询,所以我不能做通常,虽然我做它测试它作为一个独立的查询,它失败了,说没有Union的定义:
var q1 = from bp in basepay_records select new { empID = bp.Prep_emp, loc = bp.Prep_loc };
var q2 = from ass in emp_assignments select new { empID = ass.Prea_emp, loc = ass.Prea_loc };
q1.Union (q2).Dump ("Union");
我确认所有数据类型都匹配。
完整的错误消息是:
无法执行文本选择:'System.Linq.IQueryable'不包含'Union'的定义和最佳扩展方法重载'System.Linq.ParallelEnumerable.Union(System.Linq.ParallelQuery,System.Collections.Generic) .IEnumerable)'有一些无效的参数
实例参数:无法从'System.Linq.IQueryable'转换为'System.Linq.ParallelQuery'
答案 0 :(得分:0)
我现在正在工作。我不得不将它分成2个查询,这看起来很愚蠢,但是你去了。如果您有更好的方式,请告诉我:
var q1 = from mstr in emp_master_records
join loctab in
(
from bp in basepay_records
select new { empID = bp.Prep_emp, loc = bp.Prep_loc }
)
on mstr.Prem_emp equals loctab.empID
where mstr.Prem_email.StartsWith("TEST_USER")
select loctab.loc;
var q2 = from mstr in emp_master_records
join loctab in
(
from ass in emp_assignments
select new { empID = ass.Prea_emp, loc = ass.Prea_loc }
)
on mstr.Prem_emp equals loctab.empID
where mstr.Prem_email.StartsWith("GREGORY_RANDALL")
select loctab.loc;
q1.Union(q2).Dump ("Union");