[Linq]Linq join Argument types do not match(join 子句中其中一個運算式的型別不正確)

摘要:Linq join Argument types do not match(join 子句中其中一個運算式的型別不正確)

接觸好一陣子的Linq

從Linq to SQL 到 Linq to Entities也有一、兩年了@@

期間也用過數次的多欄位的join語法

但近期在撰寫多欄位join語法時,卻發現原本寫法不能用了XDXD

原本寫法如下:


var query = from p in context.a
                  join q in context.b on new { p.c1 p.c2 } equals new { q.c1 , q.c2}
                  select new {p,q};

但這樣的寫法卻出現join 子句中其中一個運算式的型別不正確的錯誤訊息

經由MVP同學Terry 的指導看到

LINQ, “Argument types do not match” error, what does it mean, how do I address it?

該篇文章才理解到,原來已經變了寫法了...Orz

 

所以現在必須改寫成下面的方式:


var query = from p in context.a
            join q in context.b on new {c1= p.c1,c2 = p.c2 } equals new { c1 = q.c1 ,c2 = q.c2}
            select new {p,q};


如此就大功告成了。