表达是查询Contains有种情况有个问题 返回

C#论坛 老数据
3 1609

string ids = ",27,28,";

 db.GetList(it => ids .Contains($",{it.q_id},"));


//这种查询方式,会把ID为2的数据也查询出来了,返回结果包含了ID为2 和27 ,28的共3条数据,相当于前后逗号没有起到作用


换成下面方式是可以得到想要的查询结果,但是为什么上面那种方式会出现ID为2的记录呢?

 string[] qIds = ids .Split(',');

db.GetList(it =>SqlFunc.ContainsArray(qIds,it.q_id));



热忱回答3

  • gr3t+2 gr3t+2 VIP0
    2020/12/29

    你用的是字符串 转成sql后是 like

    要用数字集合 转成sql后是 in

    0 回复
  • IDS应该是个集合 list<int>

    0 回复
  • 华崽 华崽 VIP0
    2020/12/29

    @gr3t+2:嗯,

    11、操作In(1,2,3)

    int [] allIds=new int[]{1,2,3};
    db.Queryable<OrderItem>().Where(it => allIds.Contains(it.OrderId)).ToList() 
    //sql select * from  OrderItem where odrderid in (1,3,3)


    这种int类型的是可以的,

    0 回复