在使用sqlsugar条件查询时,条件中如果使用Contains,如果需要自定义条件,需保证类型一致
目标需求:生成
WHERE ('[1],[2],[3]' like concat('%', concat( concat( '[', CAST(`orderState` AS CHAR)) , ']') ,'%'))
为条件的查询语句
//orderStates为字符串 '[1],[2],[3]'
//如果orderState为非字符串型,需将其转换为字符串在进行字符串连接操作
query = query.Where(a => orderStates.Contains("[" + a.orderState.ToString() + "]") );
//生成的查询语句: WHERE (@MethodConst0 like concat('%', concat( concat( @Const1 , CAST(`orderState` AS CHAR)) , @Const2 ) ,'%'))
//@MethodConst0为:'[1],[2],[3]'
//@Const1为:'['
//@Const2为:']'//如果不进行转换,导致和需要生成的查询条件不符
query = query.Where(a => orderStates.Contains("[" + a.orderState + "]") );
query = query.Where(a => orderStates.Contains("[" + a.orderState.ToString() + "]") );
//生成的查询语句: WHERE (@MethodConst0 like concat('%', concat((@Const1 +`orderState`),@Const2 ) ,'%'))