C# 具有并集的子查询上的LINQ联接
在最后一行中获取错误,表示loctab不在范围内。我已经玩过一点了,但是我看不出有什么不同的方法来做。你最后一行应该是这样读的C# 具有并集的子查询上的LINQ联接,c#,linq,tsql,C#,Linq,Tsql,在最后一行中获取错误,表示loctab不在范围内。我已经玩过一点了,但是我看不出有什么不同的方法来做。你最后一行应该是这样读的 from mstr in m_db.master_records join loctab in ( from bp in m_db.basepay_records select new { empID = bp.p_empid, loc = bp.p_loc } ) .U
from mstr in m_db.master_records
join loctab in
(
from bp in m_db.basepay_records
select new { empID = bp.p_empid, loc = bp.p_loc }
)
.Union
(
from ass in m_db.emp_assignments
select new { ass.a_emp, ass.a_loc }
)
on mstr.prem_emp = loctab.empID
我不明白这里“不在范围内”是什么意思,但有一件事不对。两种匿名类型的定义应完全相同,否则无法合并:
你有:
on loctab.empID equals mstr.prem_emp
select //... perform your select on the unioned tables.
然后也使用:
select new { empID = bp.p_empid, loc = bp.p_loc }
也许例外信息是一种伪装的方式告诉这一点 一件事是“=”应该是“等于”。此外,外部查询上没有select。奇怪的是,它告诉您loctab将超出范围,因为我不认为它超出范围。在没有数据库的情况下很难进行分析,但您可能应该使用join/on声明第一个查询,然后使用union声明第二个查询。如果需要,你可以单独申报。query1WithJoin.Union(query2)。这是一个相等的东西。谢谢大家。
select new { empID = ass.a_emp, loc = ass.a_loc }