gpt4 book ai didi

c# - 在 QueryBuilder 中使用 or 运算符连接 where 查询

转载 作者:行者123 更新时间:2023-11-30 18:40:54 26 4
gpt4 key购买 nike

QueryBuilder 在 Microsoft.Windows.Data.DomainServices 中定义。它允许您在类型 T 的集合上创建查询并在以后应用它。

当我需要通过 && 连接 where 查询时,这很容易,例如你可以这样做

        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 查询(或)??

我有一个加载数据库中所有产品的查询,因为产品是按类别组织的,用户只能选择类别的子集(他感兴趣的类别)我只想加载用户指定类别中的产品

我知道我可以通过 && 连接 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()。查看PredicateBuilder提供 Or 方法来完成它。希望这会有所帮助。

关于c# - 在 QueryBuilder 中使用 or 运算符连接 where 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com