【问题标题】:c# left join whith several tablesc# left join 与几个表
【发布时间】:2016-04-16 11:38:04
【问题描述】:

我有两张桌子

表 A(2 个字段。CODART 和 DES) 表 B(2 个字段。CODART 和预防)

我需要用 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);

你知道为什么吗? 谢谢。

【问题讨论】:

  • 试试 System.Decimal? : 问号允许空值,就像 int 一样?
  • 谢谢,jdweng。你说的对。我以前没见过。

标签: c# linq left-join


【解决方案1】:

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

是否必须在字段前使用 (Decimal?) 强制转换字段。

新的这个代码

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

非常感谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-23
    • 2014-07-19
    • 2010-09-29
    • 1970-01-01
    • 2013-04-19
    • 2015-07-14
    • 2010-09-27
    相关资源
    最近更新 更多