Queryable 的Where条件表达式 中 contains 与 || 连用时候生成的 sql语句少空格? 返回

C#论坛 老数据
3 1548

Queryable 的Where条件表达式 中 contains 与 || 连用时候生成的 sql语句中的少了个空格?

                var orderBOMList = db.Queryable<Entities.OrderBOM,Entities.SignApplication>
                    ((bom, sign) => new JoinQueryInfos(JoinType.Left, bom.AppId == sign.Id))
                    .WhereIF(filter.UnFinished, (bom, sign) => bom.TotalQty > bom.SaleQty)  //Unfinished     
                    .WhereIF(filter.ByOrderIds, (bom, sign) => filter.OrderIds.Contains(bom.OrderId))  //orderIds                                     
                    .Where((bom, sign) => bom.Saler == filter.Saler || string.IsNullOrWhiteSpace(filter.Saler)) //Saler                   
                    .Where((bom, sign) => bom.PN.Contains(filter.PN) || string.IsNullOrWhiteSpace(filter.PN))   //PN like
                    .Where((bom, sign) => bom.PNName.Contains(filter.PNName) || string.IsNullOrWhiteSpace(filter.PNName)) //PNNameLike
                    .Where((bom, sign) => bom.IsDel ==0 && sign.IsDel == 0)   
                    .Where((bom, sign) => sign.SignFlag == 2)  //签核完成
                    .ToList()
                    .Select(s=>s.Map<DTO.OrderBOM>());


SELECT `bom`.`OrderId`,`bom`.`AppId`,`bom`.`AppStatus`,`bom`.`Category`,`bom`.`SKUNO`,`bom`.`Version`,`bom`.`PN`,`bom`.`PNName`,`bom`.`MaterialType`,`bom`.`MaterialSN`,`bom`.`UnitQty`,`bom`.`BackupQty`,`bom`.`TotalQty`,`bom`.`Texture`,`bom`.`Process`,`bom`.`Saler`,`bom`.`ItemNo`,`bom`.`Remark`,`bom`.`EditBy`,`bom`.`EditTime`,`bom`.`SaleQty`,`bom`.`Id`,`bom`.`IsDel` FROM `JingjingMES`.`OrderBOM` bom Left JOIN `JingjingMES`.`SignApplication` sign ON ( `bom`.`AppId` = `sign`.`Id` )   WHERE  (`bom`.`OrderId` IN ('12'))   AND (( `bom`.`Saler` = @Saler1 ) OR @constant2)  AND ((`bom`.`PN` like concat('%',@MethodConst3,'%')) OR@constant4)  AND ((`bom`.`PNName` like concat('%',@MethodConst5,'%')) OR@constant6)  AND (( `bom`.`IsDel` = @IsDel7 ) AND ( `sign`.`IsDel` = @IsDel8 ))  AND ( `sign`.`SignFlag` = @SignFlag9 ) 

{"@Saler1":null,"@constant2":true,"@MethodConst3":null,"@constant4":true,"@MethodConst5":null,"@constant6":true,"@IsDel7":0,"@IsDel8":0,"@SignFlag9":2}





热忱回答3


  •          

                        .WhereIF(!string.IsNullOrWhiteSpace(filter.PN),(bom, sign) => bom.PN.Contains(filter.PN))   //PN like

                        .WhereIF(!string.IsNullOrWhiteSpace(filter.PNName),(bom, sign) => bom.PNName.Contains(filter.PNName)) //PNNameLike




    先用 whereif 解决了。

    哥们还是看看 是不是bug

    0 回复
  • @大内泰迪:是 bug 换这个函数 IsNullOrEmpty  就行了 

    0 回复
  • @fate stay night:好的 多谢  

    0 回复