Linq加入错误

时间:2013-10-07 14:31:10

标签: c# linq

我在下面的linq查询(第2行)上收到以下错误,我不明白如何纠正它。

  

join子句中某个表达式的类型不正确。   调用“加入”时类型推断失败。

equals表达式中的所有2个变量都是(字符串)所以我不确定为什么会出现这个错误。有没有人有任何建议?

var studentlist = from t1 in  Extern
                  join t2 in EMPstatus //m receiving the error here 
                  on new { t1.id} equals new { id= t2.id }
                  join t3 in StatusofEmp
                  on new { t2.Sta_ID } equals new {Sta_ID = t3.Sta_ID }
                  where t3.Status = "INAKTIV" 
                  select new { t1.Name };

2 个答案:

答案 0 :(得分:0)

使用join时无需创建新的匿名对象。

尝试这样的事情:

var studentlist = 
    from t1 in  Extern
    join t2 in EMPstatus
    on t1.id equals t2.id
    join t3 in StatusofEmp
    on t2.Sta_ID equals t3.Sta_ID
    where t3.Status = "INAKTIV" 
    select new { t1.Name };

答案 1 :(得分:0)

根据你的描述,我猜你的一个id列可以为空,另一个不可为空。检查哪一个可以为空,假设t1 id是可空的,t2 id不可为空,那么在join condition set bellow syntax {{ 1}}

希望上面的语法有助于解决您的问题。

id=(t1.id??0) equals t2.id