c#左连接几个表

时间:2016-04-16 11:38:04

标签: c# linq left-join

我有两张桌子

表A(2个字段.CODART和DES) 表B(2个字段.CODART和PREVEN)

我需要使用2个表进行左连接,然后返回json。表B没有记录时我得到这个错误。

(((转换为值类型' System.Decimal'失败,因为具体化值为null。结果类型的通用参数或查询必须使用可空类型。)) )

我使用此代码

        var lstart = (from art in db.tableA
                      where art.CODART == 'uno'
                      join tfa in db.tableB on art.CODART equals tfa.CODART into ArtTfa from AA in ArtTfa.DefaultIfEmpty()
                      select new 
                      {
                          art.CODART,
                          art.DES,
                          AA.PREVEN
                      });

        return Json(new { lista = lstart }, JsonRequestBehavior.AllowGet);
你知道为什么吗? 感谢。

1 个答案:

答案 0 :(得分:0)

对不起,我的问题。我找到了解决方案。

是否必须在场前使用(十进制?)场进行投射。

新的此代码

        var lstart = (from art in db.tableA
                      where art.CODART == 'uno'
                      join tfa in db.tableB on art.CODART equals tfa.CODART into ArtTfa from AA in ArtTfa.DefaultIfEmpty()
                      select new 
                      {
                          art.CODART,
                          art.DES,
                          (Decimal?)AA.PREVEN
                      });

        return Json(new { lista = lstart }, JsonRequestBehavior.AllowGet);

非常感谢。