LINQ 2 SQL错误:不能将空值分配给类型为System.Byte的成员,该类型是非空值类型

Shy*_*yju 4 linq-to-sql

我正在尝试编写LINQ 2 SQL查询,但我们的联接却离开了。但是执行时,我遇到了以下异常

无法将空值分配给类型为System.Byte的成员,该类型是非空值类型

我的LINQ 2 SQL查询在这里

 Dim items = (From i In oRecelDB.IV00200s _
                Group Join c In oRecelDB.MDS_CONTAINERs _
                    On c.CONTAINERBIN Equals i.BIN Into ic = Group From x In ic.DefaultIfEmpty() _
                Group Join sop In oRecelDB.SOP10201s _
                     On i.SERLNMBR Equals sop.SERLTNUM And i.ITEMNMBR Equals sop.ITEMNMBR _
                     Into os = Group From y In os.DefaultIfEmpty() _
                Group Join iv1 In oRecelDB.IV10002s _
                     On iv1.SERLTNUM Equals i.SERLNMBR And iv1.ITEMNMBR Equals i.ITEMNMBR _
                     Into iv2s = Group From z In iv2s.DefaultIfEmpty() _
                 Where i.SERLNMBR = "2323"  _
                 Select Bin = i.BIN, i.ITEMNMBR, i.LOCNCODE, i.DATERECD, i.SERLNMBR, i.SERLNSLD _
                , YPosted = y.POSTED).ToList()
Run Code Online (Sandbox Code Playgroud)

我知道y.POSTED内部的值即将为null可能是原因。我该如何处理?有什么想法吗 ?谢谢你

Mik*_*ike 5

问题在于,由于左联接或子查询返回null,为该查询生成的SQL返回该列的null值。C#正在推断字节类型,因为表的列不可为空,但结果的列可为空。

通过执行此操作来解决此问题

   YPosted = (byte?)y.POSTED
Run Code Online (Sandbox Code Playgroud)