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);
我无法找到如何通过||连接那些查询的位置(或)...
我有一个查询,可以在数据库中加载所有产品,因为产品按类别进行组织,用户只能选择一个类别子集(他感兴趣的那个) 我想只加载用户指定的类别的产品
我知道我可以通过&amp;&amp;来连接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 || );
}
}
.....
答案 0 :(得分:0)
您需要动态构建 where 表达式,然后将其传递给query.Where()。查看提供Or方法的PredicateBuilder来完成该操作。希望这会有所帮助。
答案 1 :(得分:0)
您可以使用此链接提供的Dynamic LINQ运算符: http://msdn.microsoft.com/en-us/bb330936.aspx (下载c#示例并获取\ LinqSamples \ DynamicQuery目录中的代码)
答案 2 :(得分:0)
您可以使用 Monty's Gush 开发的PredicateBuilder
课程。
尝试this。