一对一,一对多动态lamda查询问题 返回
var query = db.Queryable<LC_ETM_DB_DemandOrderMultipleDetailsEntity>()
.Includes(c=>c.DemandOrder)
.Includes(c=>c.DemandOrder.ListRequiredProject)
.Includes(c=>c.DemandOrder.Order)
.OrderByDescending(c => c.F_CreateDate)
.Where(lamada)
;
lamada值为{i => ((True AndAlso (True AndAlso (True AndAlso (i.DemandOrder.ListRequiredProject.F_Category == "817327215627730885")))) AndAlso ((True AndAlso True) AndAlso True))}
生成出的SQL为什么是SELECT * FROM (SELECT [F_DemandOrderID],[F_GroupNumber],[F_UnitName],[F_UnitNumber],[F_TotalUnitNumber],[F_Specification],[F_SchedulingDeliveryDate],[F_CreateDate],[F_CreateUserId],[F_CreateUserName],[F_ModifyDate],[F_ModifyUserId],[F_ModifyUserName],[F_Id],ROW_NUMBER() OVER(ORDER BY [F_CreateDate] DESC) AS RowIndex FROM [LC_ETM_DB_DemandOrderMultipleDetails] [i] WHERE ((( 1 = 1 ) AND(( 1 = 1 ) AND(( 1 = 1 ) AND(( SELECT [LC_ETM_DB_ListRequiredProjects1].[F_Category] FROM [LC_ETM_DB_DemandOrder] [LC_ETM_DB_DemandOrder0] Inner JOIN [LC_ETM_DB_ListRequiredProjects] [LC_ETM_DB_ListRequiredProjects1] ON [LC_ETM_DB_ListRequiredProjects1].[F_Id]=[LC_ETM_DB_DemandOrder0].[F_ListRequiredProjectID] WHERE [i].[F_Id] = [LC_ETM_DB_DemandOrder0].[F_Id] ) = N'817327215627730885' )))) AND ((( 1 = 1 ) AND( 1 = 1 ) ) AND ( 1 = 1 ) ))) T WHERE RowIndex BETWEEN 1 AND 20
热忱回答(3)
-
fate sta VIP0
2026/5/8你够造的表达式也要用C不能用i
0 回复 -
若。夏 VIP0
2026/5/8
修改为I也是一样的SELECT * FROM (SELECT [F_DemandOrderID],[F_GroupNumber],[F_UnitName],[F_UnitNumber],[F_TotalUnitNumber],[F_Specification],[F_SchedulingDeliveryDate],[F_CreateDate],[F_CreateUserId],[F_CreateUserName],[F_ModifyDate],[F_ModifyUserId],[F_ModifyUserName],[F_Id],ROW_NUMBER() OVER(ORDER BY [F_CreateDate] DESC) AS RowIndex FROM [LC_ETM_DB_DemandOrderMultipleDetails] [i] WHERE ((( 1 = 1 ) AND(( 1 = 1 ) AND(( 1 = 1 ) AND(( SELECT [LC_ETM_DB_ListRequiredProjects1].[F_Category] FROM [LC_ETM_DB_DemandOrder] [LC_ETM_DB_DemandOrder0] Inner JOIN [LC_ETM_DB_ListRequiredProjects] [LC_ETM_DB_ListRequiredProjects1] ON [LC_ETM_DB_ListRequiredProjects1].[F_Id]=[LC_ETM_DB_DemandOrder0].[F_ListRequiredProjectID] WHERE [i].[F_Id] = [LC_ETM_DB_DemandOrder0].[F_Id] ) = N'817327215627730885' )))) AND ((( 1 = 1 ) AND( 1 = 1 ) ) AND ( 1 = 1 ) ))) T WHERE RowIndex BETWEEN 1 AND 20希望的查询是(i.DemandOrder.ListRequiredProject.F_Category == "817327215627730885",但实际执行的是LC_ETM_DB_DemandOrder0].[F_Id] ) = N'817327215627730885'
0 回复 -
若。夏 VIP0
2026/5/8@fate sta:会不会是因为两层的问题i.DemandOrder.ListRequiredProject.F_Category == "817327215627730885"
0 回复