我已创建此linq以使用tabRealisation
和tabPrevision
let
左连接Group.FirstOrDefault
的所有行
Dim query1 =
(From r In tabRealisation.AsEnumerable
Group Join p In tabPrevision.AsEnumerable
On r.Field(Of Integer)("code_part") Equals p.Field(Of Integer)("code_part")
Into Group
Let p = Group.FirstOrDefault
Where r.Field(Of Integer)("code_part") = 276
Select an = r.Field(Of Integer)("Annee"),
code_part = r.Field(Of Integer)("code_part"),
Designation_part = r.Field(Of String)("Designation_part"),
NbrR = r.Field(Of Integer?)("UniteVendu"),
EncP = p.Field(Of Double?)("CAEncaissVentePrev"),
RecP = p.Field(Of Double?)("MontantRecouvrementPrev")
).ToList
但如果p不包含任何行,则会收到错误:
该值不能为null。 我试过这个:
RecP = If(p.Field(Of Double?)("MontantRecouvrementPrev").Equals(DBNull.Value)
, 0, p.Field(Of Double?)("MontantRecouvrementPrev")),
但是我得到了相同的错误消息。 任何帮助,请
答案 0 :(得分:0)
当p
为空时使用空条件运算符;需要VB 14:
Select an = r.Field(Of Integer)("Annee"),
code_part = r.Field(Of Integer)("code_part"),
Designation_part = r.Field(Of String)("Designation_part"),
NbrR = r.Field(Of Integer?)("UniteVendu"),
EncP = p?.Field(Of Double?)("CAEncaissVentePrev"),
RecP = p?.Field(Of Double?)("MontantRecouvrementPrev")
).ToList