0

使用 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,没有差异。这个联合是一个更大查询的一部分,它最终会出现在一个连接中使用的子查询中,所以我不能像往常一样做,虽然我把它作为一个独立的查询进行了测试,但它失败了,说没有联合的定义:

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”

4

1 回答 1

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");
于 2013-05-30T17:04:47.747 回答