在使用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 ) ,'%'))
文章讨论了在使用SQLSugar进行条件查询时,当条件中包含Contains函数时,如果orderState是字符串以外的类型,如何确保其转换为字符串以匹配预期查询条件。示例代码展示了如何正确处理这种情况以生成正确的查询语句。
309

被折叠的 条评论
为什么被折叠?



