ClearFilter疑问 返回

SqlSugar 沟通中
1 275
该叫什么 turn 发布于2024/12/26
悬赏:0 飞吻

db.Queryable<AsTableLog>().ClearFilter()

    .LeftJoin<AsTableLog202401>((a, b) => a.id == b.id)

    .Where(a => a.id == "1")

    .Select((a, b) => new

    {

        a.id,

        Name=SqlFunc.Subqueryable<AsTableLog202401>().Where(c=>c.id==a.id).Select(c=>c.msg)

    })

    .ToList();

我这样可以清除两个表的全部过滤器,生成的sql:

SELECT  `a`.`id` AS `id` , (SELECT `c`.`msg` FROM `as_table_log_202401` `c`  WHERE ( `c`.`id` = `a`.`id` ) limit 0,1) AS `Name`  FROM `as_table_log` `a` Left JOIN `as_table_log_202401` `b` ON ( `a`.`id` = `b`.`id` )   WHERE ( `a`.`id` = @id0 )

但是如果把where放到前面

db.Queryable<AsTableLog>().ClearFilter()

    .Where(a => a.id == "1")

    .LeftJoin<AsTableLog202401>((ab=> a.id == b.id)

    .Select((ab=> new

    {

        a.id,

        Name=SqlFunc.Subqueryable<AsTableLog202401>().Where(c=>c.id==a.id).Select(c=>c.msg)

    })

    .ToList();

生成的sql:

SELECT  `a`.`id` AS `id` , (SELECT `c`.`msg` FROM `as_table_log_202401` `c`  WHERE ( `c`.`id` = `a`.`id` ) limit 0,1) AS `Name`  FROM  (SELECT * FROM  (SELECT `id`,`msg`,`createtime`,`dafsdg111111`,`IsDelete` FROM `as_table_log`  WHERE ( `id` = @id0 ) ) MergeTable ) `a` Left JOIN `as_table_log_202401` `b` ON ( `a`.`id` = `b`.`id` ) AND ( `b`.`IsDelete` = @IsDelete1 )   WHERE ( `a`.`IsDelete` = @IsDelete1 )

过滤器好像都没清掉,这是正常情况吗

热忱回答1

  • fate sta fate sta VIP0
    2024/12/26

      .ClearFilter()

     .ToList();

    写到tolist前

    0 回复