c# - LINQ to SQL 连接和 If 条件

标签 c# linq join if-statement conditional-statements

如果 bstock 不为空且 bstock.Price (bstock.Price 为可为 null 的 doubel? ) 不为 null。该连接是左外部连接。有人可以帮助我吗?

var bstocks = (from p in qry
                             join bstock in bstockRepository.Select() on p.StockCode equals bstock.StockCode
                             into J1
                             from bstock in J1.DefaultIfEmpty()
                             select new
                             {
                                 p.StockCode,
                                 p.Description,
                                 p.ListPrice,
                                 p.Price =  bstock.Price != null ? bstock.Price : p.Price,
                                 p.QuantityOnHand ,
                                 p.Cube,
                                 p.ShippingFormat,
                                 p.Weight,
                                 p.NextShipment,
                                 p.NextShipment2,
                                 p.NextShipmentQuantity,
                                 p.NextShipment2Quantity,
                                 Bstock = p.Bstock
                             }
                              ).AsQueryable();

最佳答案

bstock 在您的查询中可以为空,因为您正在运行左连接。所以你需要考虑到这一点:

Price =  bstock != null && bstock.Price != null ? bstock.Price : p.Price,

结果:

var bstocks = (from p in qry
                join bstock in bstockRepository.Select() on 
                    p.StockCode equals bstock.StockCode into J1
                from bstock in J1.DefaultIfEmpty()
                select new
                {
                        p.StockCode,
                        p.Description,
                        p.ListPrice,
                        Price =  bstock != null && bstock.Price != null ? bstock.Price : p.Price,
                        p.QuantityOnHand ,
                        p.Cube,
                        p.ShippingFormat,
                        p.Weight,
                        p.NextShipment,
                        p.NextShipment2,
                        p.NextShipmentQuantity,
                        p.NextShipment2Quantity,
                        Bstock = p.Bstock
                    });

关于c# - LINQ to SQL 连接和 If 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6326008/

相关文章:

c# - VS2012 中 C# 的大括号样式

c# - 如何为 Windows 窗体中的文本框分配快捷键(如 Ctrl+F)?

sql - COUNT(1) OVER() with Linq to Sql

mysql - 连接后显示表的所有行

sql - 请提供简单的SQL Server语法帮助

c# - .Net 程序未获得经过验证的服务器证书

c# - C# 解释中的部分方法

c# - 无法在 C# 中隐式转换类型 'System.Collections.Generic.List<AnonymousType#1>

c# - 如何使用具有不同类的多个属性的 linq `Except`?

mysql - 尽管在 MySQL 4.1.25 中有效,但 MySQL 5.5 中的混合连接查询存在问题