C# 如何通过PredicateBuilder为此构建动态SQL?
我正在使用这里看到的PredicateBuilder,我想为表构建一个LINQ,如何将这个C# 如何通过PredicateBuilder为此构建动态SQL?,c#,sql,linq,sql-like,predicatebuilder,C#,Sql,Linq,Sql Like,Predicatebuilder,我正在使用这里看到的PredicateBuilder,我想为表构建一个LINQ,如何将这个transact-sql转换为LINQ 选择* 来自成员 其中Confirm=true CaseExist=true 和(用户名如“%Jack%”或全名如“%Jack%”) 和(标签位于('3D'、'Photoshop'、'Java'、'Design')) 和(Catid+,“如“%2,%”或Catid+,“如“%4,%” 或Catid+,“如“%5、%”或Catid+,“如“%21、%”) 按费率1说明、
transact-sql
转换为LINQ
选择*
来自成员
其中Confirm=true
CaseExist=true
和(用户名如“%Jack%”或全名如“%Jack%”)
和(标签位于('3D'、'Photoshop'、'Java'、'Design'))
和(Catid+,“如“%2,%”或Catid+,“如“%4,%”
或Catid+,“如“%5、%”或Catid+,“如“%21、%”)
按费率1说明、费率2说明、费率3说明、最新登录说明、最新日期说明排序
我构建这个:
var predicate = PredicateBuilder.True<Member>();
if (!string.IsNullOrEmpty(SearchString))
{
predicate = predicate.And(x =>
x.Username.Contains(SearchString)
|| x.FullName.Contains(SearchString)
);
}
predicate = predicate.And(x => x.Confirmed == true)
.And(x => x.CaseExist == true);
var predicate=PredicateBuilder.True();
如果(!string.IsNullOrEmpty(SearchString))
{
谓词=谓词。和(x=>
x、 Username.Contains(搜索字符串)
||x.FullName.Contains(搜索字符串)
);
}
谓词=谓词和(x=>x.confirm==true)
.和(x=>x.CaseExist==true);
但是我不能继续了,所以有人能建议我怎么做吗?string[]arr=newstring[]{“3D”、“Photoshop”、“Java”、“Design”};
string[] arr = new string[] { "3D", "Photoshop", "Java", "Design" };
predicate = predicate.And(x => arr.Contains(x.Tags));
var arr2 = new[] { "2", "4", "5", "21" };
var predicateCatid = PredicateBuilder.False<Member>();
foreach (var cat in arr2)
{
predicateCatid = predicateCatid.Or(x => (x.Catid + ",").Contains(cat + ","));
}
predicate = predicate.And(predicateCatid);
谓词=谓词和(x=>arr.Contains(x.Tags));
var arr2=新[]{“2”、“4”、“5”、“21”};
var predicateCatid=PredicateBuilder.False();
foreach(arr2中的var cat)
{
predicateCatid=predicateCatid.Or(x=>(x.Catid+“,”).Contains(cat+“,”));
}
谓词=谓词和(predicateCatid);
我想知道为什么
标签
只能有一个标签。效果很好,非常感谢。顺便说一句,用户只需选择1个标签作为主标签,真正的标签是Catid。