[英]How to build dynamic SQL by PredicateBuilder for this?
I'm using the PredicateBuilder as seen here http://www.albahari.com/nutshell/predicatebuilder.aspx , I want to build a LINQ for table, how to transform this transact-sql
to LINQ? 我使用的是PredicateBuilder,如http://www.albahari.com/nutshell/predicatebuilder.aspx所示 ,我想为表构建LINQ,如何将此transact-sql
转换为LINQ?
SELECT *
FROM Members
WHERE Confirm=true
AND CaseExist=true
AND ( Username LIKE '%Jack%' OR Fullname LIKE '%Jack%' )
AND ( Tags IN ('3D','Photoshop','Java','Design') )
AND ( Catid+',' LIKE '%2,%' OR Catid+',' LIKE '%4,%'
OR Catid+',' LIKE '%5,%' OR Catid+',' LIKE '%21,%' )
ORDER BY Rate1 DESC, Rate2 DESC, Rate3 DESC, LatestLogin DESC, LatestUpdate DESC
I build this: 我建立这个:
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);
But I can't go on, so can anyone suggest me on how to do this? 但是我不能继续,所以有人可以建议我如何做吗?
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);
I wonder why Tags
can have only one tag in it. 我不知道为什么Tags
只能包含一个标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.