var q =from c in db.A 
      join ec in db.B on new {A.Decode,A.comCode} equals {B.Decode,B.comCode} into cate
       from catalog in cate.DefaultIfEmpty()
      select new 
       {
           .....
        };
这是2张表 通过2个字段连接。 语法 应该没问题。
只是我 遇到这样一种情况 A的Decode 可能为空 ,B的Decode 一定不为空
这样 写了就会报 推理错误。
刚学LINQ 2个月,希望 大家不要见笑。
  不知道这该怎么处理了.
  我不要这样写法 from c in db.A 
                 from B in db.C 
                 where (A.XX==B.XX && A.XX==B.XX )  连接不是很明确,内联,外联 不怎么好处理。如果有很过张表连接 ,这样写 就更麻烦了。

解决方案 »

  1.   

    给你推荐个办法,你先把2张表用视图先弄好,看看有什么问题  然后ar q =from c in db.视图名字
    where  条件select{c.你要的字段};return  q;
      

  2.   

    from c in T_users join d in T_userbases  on c.Userid equals d.Useridwhere  (A.XX==B.XX && A.XX==B.XX )
     select new { c.Userid ,d.Userid }这样试试
      

  3.   

    建立  视图 是为了建立表关系  ,这样 我们在用Linq的时候  只需要对视图  而不是对2张表的操作了,这样,比较方便点,这也是我学习Linq的方法