c#与多个表左连接
我有两张桌子 表A(CODART和DES两个字段) 表B(CODART和PREVEN两个字段) 我需要使用2个表进行左连接,并返回json。表B没有记录时,我得到这个错误 ((转换为值类型'System.Decimal'失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为null的类型。)) 我使用这个代码c#与多个表左连接,c#,linq,left-join,C#,Linq,Left Join,我有两张桌子 表A(CODART和DES两个字段) 表B(CODART和PREVEN两个字段) 我需要使用2个表进行左连接,并返回json。表B没有记录时,我得到这个错误 ((转换为值类型'System.Decimal'失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为null的类型。)) 我使用这个代码 var lstart = (from art in db.tableA where art.CODART == '
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);
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);
你知道为什么吗?
谢谢。对不起,我的问题。我找到了解决办法 是否需要在字段前使用(十进制?)对字段进行强制转换 这个新代码
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);
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);
非常感谢。试试System.Decimal?:问号允许像int一样的null?谢谢,jdweng。你是对的。我以前没见过。