在QueryBuilder中连接带有或操作符的查询
本文关键字:操作符 查询 QueryBuilder 连接 | 更新日期: 2023-09-27 18:09:47
QueryBuilder在Microsoft.Windows.Data.DomainServices中定义。它允许您在类型T的集合上创建查询,并稍后应用它。
当我需要连接&&这很简单,例如你可以这样做
var query = new QueryBuilder<Customer>();
if (!string.IsNullOrEmpty(this.CustomerFirstName))
query = query.Where(c => c.FirstName == this.CustomerFirstName);
if (!string.IsNullOrEmpty(this.CustomerLastName))
query = query.Where(c => c.LastName == this.CustomerLastName);
if (!string.IsNullOrEmpty(this.CustomerPhone))
query = query.Where(c => c.Phone == this.CustomerPhone);
if (!string.IsNullOrEmpty(this.CustomerMail))
query = query.Where(c => c.Mail == this.CustomerMail);
我找不到我应该如何连接那些查询||(或)??
我有一个加载数据库中所有产品的查询,因为产品是按类别组织的,用户只能选择类别的一个子集(他感兴趣的那个)我想只加载用户指定的类别中的产品
我知道我可以用&&连接Where()排除未选择的类别示例
query.Where(c => c.CategoryName != "MyCategory");
但我不喜欢它。
我想在foreach循环中执行
private void LoadProducts()
{
var query = new QueryBuilder<Product>();
//Get Only Products in specified categories
if (!string.IsNullOrEmpty(WebContext.Current.User.SelectedCategoriesCSV))
{
foreach (string cat in WebContext.Current.User.SelectedCategoriesCSV.Split(';'))
{
????//query.Where(c => c.CategoryName == cat || );
}
}
.....
您需要动态构建where表达式,然后将其传递一次给query.Where()。请查看提供Or方法来完成此操作的PredicateBuilder。
你可以使用动态LINQ操作符:http://msdn.microsoft.com/en-us/bb330936.aspx(下载c#示例并在'LinqSamples'DynamicQuery目录中获取代码)
您可以使用Monty 's rush开发的PredicateBuilder
类
试试这个。