问题标签 [predicatebuilder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4631 浏览

c# - Linq In 子句和谓词构建

我有两张桌子。报告报告数据。ReportData 有一个约束 ReportID。

如何编写我的 linq 查询以返回满足 ReportData 谓词条件的所有 Report 对象?在 SQL 中是这样的:

这就是我构建谓词的方式:

这是我目前的查询结构:

我也尝试过执行以下操作: public override IQueryable GetReports(Expression> predicate, LLReportsDataContext reportDC) { if (reportDC == null) throw new ArgumentNullException("reportDC");

但是,我得到了这个异常:“用于查询运算符'Where'的不支持的重载。”

更新 这修复了它:

0 投票
2 回答
13371 浏览

c# - C# PredicateBuilder 实体:参数“f”未绑定在指定的 LINQ to Entities 查询表达式中

我需要构建一个动态过滤器,并且我想继续使用实体。由于这个原因,我想使用来自 albahari 的 PredicateBuilder。

我创建了以下代码:

当我运行代码时,只有 1 个不是日期过滤器的过滤器。所以只填充了内部谓词。执行谓词时,出现以下错误。

参数“f”未绑定在指定的 LINQ to Entities 查询表达式中。

在寻找答案时,我发现了以下页面。但这已经在 LINQKit 中实现了。

有没有其他人遇到过这个错误并且知道如何解决它?

0 投票
1 回答
463 浏览

linq - 如何以编程方式将 LINQ 查询转换为正确描述 linq 表达式的可读英文文本?

我正在开发一个使用 Albahari 的 PredicateBuilder 库 http://www.albahari.com/nutshell/在运行时动态创建 linq 表达式的项目。我想找到一种方法,在运行时将这个动态创建的 Expression<Func<T, bool>> 类型的 linq 谓词翻译成可读的英文语句。

我将以静态创建的 linq 语句为例:

从购买中的 p 中
选择 p
,其中 p.Price > 100 && p.Description != "Bike"。

对于这个 linq 语句,我想在运行时动态生成一个英文描述,如下所示:

“您正在搜索价格大于 100 且描述不是自行车的商品”。

是否有任何已经存在的库可以实现这一目标,请记住我正在使用 PredicateBuilder 动态生成 where 谓词。如果不存在解决方案,您将如何构建解决方案?

谢谢!

0 投票
1 回答
10506 浏览

c# - 带有条件 AND、OR 和 NOT 过滤器的 Linq PredicateBuilder

我们有一个使用 LINQ to SQL 的项目,为此我需要重写几个搜索页面以允许客户端选择是否希望执行and或 an or搜索。

我虽然关于使用PredicateBuilder重做 LINQ 查询并且我认为它工作得很好。我实际上有一个包含我的谓词的类,例如:

为了执行搜索,我正在这样做(为简洁起见,省略了一些代码):

虽然我对此感到相当满意,但我有两个担忧:

  1. 评估 SearchType 属性的 if/else 块感觉它们可能是潜在的代码异味。
  2. 客户现在坚持能够执行“而不是”/“或不是”搜索。

为了解决第 2 点,我想我可以通过简单地重写我的表达式来做到这一点,例如:

然而,这感觉有点杂乱无章,这通常意味着那里有更好的解决方案。谁能推荐如何改进?我知道动态 LINQ,但我真的不想失去 LINQ 的强类型。

0 投票
2 回答
789 浏览

c# - LINQ 谓词中使用的集合范围

我真的很喜欢PredicateBuilder。它允许我非常动态地构建各种查询。谓词变量可以传递给不同的对象,并且他们可以添加他们知道的值等。除非我需要在散列集合上使用 .Contains 。呸!崩溃和燃烧。

例如(示例/伪代码,这可能会或可能不会编译/运行):

当我尝试这样做时,我得到一个NotSupportedException: Method 'Boolean Contains(Int32)' has no supported translation to SQL due to selectedIDs HashSet不在范围内。如果我用同样的方法做这一切,那么它工作得很好。

我需要知道正确的方法来让我的谓词在那里解析或编译或其他任何东西,以便它可以在与声明 HashSet 的地方不同的范围内使用。有什么帮助吗?

更新:我错了。下面的代码工作正常,所以没有范围冲突。谢谢杰。

0 投票
3 回答
4162 浏览

silverlight - 如何从表达式树动态构造谓词方法?

下面是场景:Silverlight 4.0、DataGrid、PagedCollectionView itemssource。目标是将过滤器应用于 PCV。过滤器需要是一个Predicate<object>(Method)- 其中 Method 对对象实现一些逻辑并返回 true/false 以供包含。我需要在过滤器逻辑中选择性地包含 3 个不同的标准,并且显式代码很快就会变得丑陋。我们不想这样,对吗?

所以我看到有一种方法可以使用 PredicateBuilder 构建表达式树并将其传递给 Linq.Where,a la:

[顺便说一句,这不是我想要做的]

使用 3 个可选标准,我想写如下内容:

当然这不会编译,因为 PredicateBuilder 创建了一个Expression<Func<T, bool>>不是实际的谓词方法。但是我看到有一些方法可以将表达式树转换为方法,所以在我看来应该有一种方法可以完成我所追求的目标,而无需求助于一堆嵌套的 if/then/else 语句。

所以问题是 - 有没有办法动态构建谓词方法?

TIA

0 投票
2 回答
476 浏览

c# - PredicateBuilder 方法说明

我查看了PredicateBuilder的源代码,它的实现让我很好奇。让我们看一下 Or 方法的实现:

为什么它调用新的 lambda 而不是仅使用 OrElse 作为谓词主体?

0 投票
2 回答
2477 浏览

c# - LINQ to SQL - PredicateBuilder

关于如何充分利用 PredicateBuilder 的快速问题。它的工作原理如下:

问题是,如果我还想通过任意成员进行搜索,即传递函数 string[] 作为关键字,还要传递要搜索的字段,例如 fieldToSearch,并替换 p=> p.Description,该怎么办。包含(温度));允许通过 fieldToSearch 进行搜索?

这可能吗,这是一个坏主意吗?

0 投票
2 回答
408 浏览

c# - SubSonic 3,在运行时构建动态或表达式

我有一种情况,我必须根据用户选择动态构建 linq 查询。如果我必须动态生成 sql,我可以这样做:

现在我需要以同样的方式创建一个 linq 查询。

这适用于亚音速

我用 PredicateBuilder http://www.albahari.com/nutshell/predicatebuilder.aspx尝试过,但是这会引发亚音速异常。

抛出的异常:NotSupportedException: The member 'productType1' is not supported at SubSonic.DataProviders.MySQL.MySqlFormatter.VisitMemberAccess

任何人都知道如何让这个查询工作:

0 投票
3 回答
2859 浏览

c# - C# 谓词生成器不工作

我正在尝试在以下代码中使用谓词生成器:

问题是在这条线上:

p.Id不会智能感知并引发以下编译错误:

什么是 PredicateBuilder