我想在BarcodePost上执行左外连接

I want to Perform Left Outer Join on BarcodePost

提问人:Farhan Patel 提问时间:8/21/2023 更新时间:8/21/2023 访问量:37

问:

在这里,我想在LINQ中的BarcodePost上执行左外连接,我使用了defaultIfEmpty(),但它没有返回预期的结果。

var result = (from data in _dbContext.MaterialInwardBarcodes
                            join material in _dbContext.MaterialInwardDetails on data.ProductId equals material.ProductId
                            join prod in _dbContext.Products on data.ProductId equals prod.Id
                            join vendor in _dbContext.Vendors on data.VendorId equals vendor.Id
                            join barcode in _dbContext.BarcodePost on data.Barcode equals barcode.BarcodeNumber into barcodeGroup
                            from barcode in barcodeGroup.DefaultIfEmpty()
                            where material.MaterialInwardHeaderId == data.RefId && material.Quantity - barcode.Quantity > 0
                            where data.Date <= date && data.VendorId == vendorId
                            select new VendorWiseStock()
                            {
                                VendorName = vendor.Name,
                                ProductId = prod.Id,
                                CurrentStock = material.Quantity - barcode.Quantity
                            }).ToListAsync();
join barcode in _dbContext.BarcodePost on data.Barcode equals barcode.BarcodeNumber into barcodeGroup
                            from barcode in barcodeGroup.DefaultIfEmpty()

在上面的代码中,我使用 defaultIfEmpty() 在条形码上使用左外连接,但它仍然返回空数据,而不是为我提供其他表的数据。这里是条形码。Quantity 可以为 null,但如果条形码,则以 null 形式提供整个数据。数量不可用,有人可以以其他方式向我提供,或者我应该在上面的代码中更改什么。

C# asp.net LINQ ASP.NET 核心

评论

0赞 Gennadii Saltyshchak 8/21/2023
如果集合具有引用项类型(类或记录,但不是结构),则可以为 null,因此可能会导致(由于 )。在这种情况下,应将其更改为“条形码?数量”。_dbContext.BarcodePostbarcodebarcode.QuantityNullReferenceExceptionbarcodeGroup.DefaultIfEmpty()

答: 暂无答案