关于LeftJoin 返回
SqlSugar
6
110

悬赏:5 飞吻
var iFId=11; var oFId=22; var opp="032262218212"; var cDir=0; await Db.Queryable<ACFitem>() .LeftJoin<ACFitemdetail>((a,b)=>a.Id==b.ItemId) .Where((a, b) => b.Code == opp.Substring(0, b.Code.Length) && a.Dir == (cDir == 0 ? iFId : oFId) && a.Disabled == 0) .OrderBy(a=>a.Code)//此处变量名必须和上面一致 .FirstAsync();
生成的sql
SELECT TOP 1 [a].[code],[a].[name],[a].[disabled],[a].[ts],[a].[id],[a].[dir] FROM [AcFItem] a Left JOIN [AcFItemDetail] b ON ( [a].[id] = [b].[ItemId] ) WHERE ((( [b].[code] =LEN([b].[code])SUBSTRING(@MethodConst0,1 + @MethodConst1,Result)) AND ( [a].[dir] =( CASE WHEN ( @Const3 = @currentDirection4 ) THEN @MethodConst5 ELSE @MethodConst6 END ))) AND ( [a].[disabled] = @Disabled7 ))ORDER BY [a].[code] ASC
((( [b].[code] =LEN([b].[code])SUBSTRING(@MethodConst0,1 + @MethodConst1,Result)) ,这块语句语法错误,想要生成
[b].[code] =SUBSTRING(@MethodConst0,1 + @MethodConst1,LEN([b].[code])),是不是left join 后面的where里不允许实时计算。
热忱回答(6)
-
fate sta VIP0
2周前是最新版本吗?,如果是还有这这个问题就先把一个where拆成2个where吧 。我这边先记下来
0 回复 -
?稻草人 VIP0
2周前@fate sta:版本是5.1.3.42,我nuget更新到.45 还是一样的错误 (SUBSTRING”附近有语法错误。)。我把subsing 用扩展方法left替代,aop直接不打印对应的sql语句了
0 回复 -
?稻草人 VIP0
2周前@fate sta:
var
iFId=11;
var
oFId=22;
var
opp=
"032262218212"
;
var
cDir=0;
await Db.Queryable<ACFitem>()
.LeftJoin<ACFitemdetail>((a,b)=>a.Id==b.ItemId)
.Where((a, b) => b.Code == opp.Substring(0, b.Code.Length))
.OrderBy(a=>a.Code)
//此处变量名必须和上面一致
.FirstAsync();
我不管其他条件,就这样,还是SUBSTRING”附近有语法错误
0 回复 -
?稻草人 VIP0
2周前目前先暂时查出来,用linq 操作看看。
0 回复 -
fate sta VIP0
2周前你先用SqlFunc.Length 我后面修复
0 回复 -
?稻草人 VIP0
2周前@fate sta:好的
0 回复