排名
1
文章
877
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术
原
sqlsugar 逗号分割字符串的多匹配,相当于动态Contains,多个Contains,根据列表动态like,动态多条件,动态或者or。匹配多个值,多对多的匹配,数据库存储的也是多个值

下面说的情况适用于数据库里边存储的字段也是多个值,比如数据库里边的UserType里边的值可能是”2,3,4”或者”3,5”这种,然后传递”2,4”,可以把2拿去匹配一次,在把4拿去匹配一次,相当于就是多对多的匹配了。如果数据库里边存储的是单个值,那么就非常简单了,直接一个Contains就解决了,比如ChoiseLevels.Contains(a.MessageLevel),不要把这种简单的情况与这里说的情况搞混了哦
方案一:使用 LINQ 和 Any 方法
这种方法先将输入的字符串分割成数组,然后检查 UserType 是否包含数组中的任何一个值:
// 假设 input.UserType = "2,3"
var userTypes = input.UserType.Split(',', StringSplitOptions.RemoveEmptyEntries);
var query = db.Queryable<User>()
.Where(a => userTypes.Any(type => a.UserType.Contains(type)))
.ToList();
一般需要加上为空判断的话可以这样写
string[]? choiseLevels = null;
if (!string.IsNullOrWhiteSpace(input.ChoiseLevels))
{
choiseLevels = input.ChoiseLevels.Split(',', StringSplitOptions.RemoveEmptyEntries);
}
然后配合一个whereif就可以了
.WhereIF(choiseLevels != null,a=> choiseLevels.Any(type => a.MessageLevel.Contains(type)))
方案二:使用动态条件构建器
如果需要更灵活的构建方式,可以使用 SqlSugar 的动态条件构建:
var userTypes = input.UserType.Split(',', StringSplitOptions.RemoveEmptyEntries);
var expression = Expressionable.Create<User>();
foreach (var type in userTypes)
{
expression.Or(a => a.UserType.Contains(type));
}
var query = db.Queryable<User>()
.Where(expression.ToExpression())
.ToList();
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价