2013-05-30 44 views
0

使用Linqpad摸出我的查詢,得到上述錯誤:錯誤的LINQ parallequery轉換爲IEnumerable的

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

我已經有和無的第一個查詢,不存在在括號試了一下。這個聯合是一個更大的查詢的一部分,並且這最終會放在一個用於聯接的子查詢中,所以我不能照常進行,儘管我測試了它作爲一個獨立的查詢,但它失敗了,說:沒有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」不包含「聯盟」的定義和最佳推廣方法重載「System.Linq.ParallelEnumerable.Union (System.Linq.ParallelQuery,System.Collections.Generic.IEnumerable)」有一些無效參數

實例參數:無法從轉換 'System.Linq.IQueryable' 到 'System.Linq.ParallelQuery'

+1

你知道什麼是具體的錯誤信息。一種可能性是empID類型,或者loc在每個匿名類型中是不同的。例如,一個可能很長,而另一個則是int。 – cgotberg

+0

什麼是basepay_records? –

+0

basepay_records和emp_assignments是表格。 – BattlFrog

回答

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