如何在一个查询中添加SqlMethods.Like()的变量计数? [英] How can I add variable count of SqlMethods.Like() in one query?
本文介绍了如何在一个查询中添加SqlMethods.Like()的变量计数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
接下来您能帮我吗:我想在一个查询中添加SqlMethods.Like()的变量计数?
Can you help me with next: I'd like to add variable count of SqlMethods.Like() in one query?
例如:我在目录catCode中有四个单词,如何使用四个SqlMethods.Like()创建LINQ查询?
For example: I've four words in list catCode, how can I create LINQ query with four SqlMethods.Like()?
using (var db = new MappingDataContext(_connection))
{
db.ObjectTrackingEnabled = false;
return (
from r in db.U_CDW_REPORTs
where (catCode.Length > 0 ?
SqlMethods.Like(r.CATEGORY, catCode) : r.CATEGORY != "*")
where r.SI_QTY > 0
orderby r.SI_QTY descending
select new Item
{
...
}).ToList();
}
推荐答案
您需要的是对SqlMethod.Like
操作进行动态或运算.您需要 PredicateBuilder .
What you need is dynamically OR-ing SqlMethod.Like
operations. You need the PredicateBuilder.
更新:这是一个如何使用谓词生成器的示例.
Update: Here is an example of how to use the predicate builder.
string[] searchItems =
new string[] { "Pattern1", "Pattern2", "Pattern3" };
var likeExpression = PredicateBuilder.False<U_CDW_REPORT>();
foreach (string searchItem in searchItems)
{
var searchPattern = "%" + searchItem + "%";
likeExpression = likeExpression.Or(r =>
SqlMethods.Like(r.CATEGORY, searchPattern));
}
return (
from r in db.U_CDW_REPORTs.Where(likeExpression)
where r.SI_QTY > 0
orderby r.SI_QTY descending
select new Item { ... }).ToList();
这篇关于如何在一个查询中添加SqlMethods.Like()的变量计数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文