问题标签 [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.
c# - 使用 PredicateBuilder 查询两种不同的实体类型
我拼命尝试使用 LinqKits PredicateBuilder 允许用户在文本框中输入搜索词并从两个数据库表/实体集中返回记录,但我很难找到任何地方。(简化的)数据库结构如下:
因此,每个人可以有 0 个或多个别名。我想要做的是允许用户搜索名称并从 Person 表中拉回该名称与 Person 或 Alias 表中的名称匹配的行。到目前为止,我得到了:
这不起作用,因为我正在尝试从 People 转换为 Alias。基本上我完全卡住了,不确定是否可以对两个不同的表进行 Or 查询(?)
linq - 使用 PredicateBuilder/AsExpandable 时如何跟踪 linq 查询?
我正在使用 PredicateBuilder,这意味着我正在使用 AsExpandable 扩展方法。问题是我无法再跟踪我的 SQL 查询,因为当我尝试将查询强制转换为 ObjectQuery 时会引发以下错误,以便我可以对其进行 ObjectQuery.ToTraceString() 调用...
无法将“LinqKit.ExpandableQuery`1[Genesis.Person]”类型的对象转换为“System.Data.Objects.ObjectQuery”类型。
有任何想法吗?
vb.net - 在 VB.NET 中使用 PredicateBuilder
我在一个单独的 C# 项目中重新创建了 Predicatebuilder 类,我试图在 VB.NET 项目中使用它,但我不断收到以下错误:
重载解析失败,因为没有可访问的“或”接受此数量的参数。
当我像这样使用它时:
引用了 relivant 项目,我使用了正确的导入语句,它全部编译没有任何错误。
知道我哪里出错了吗?
这是我正在使用的 C# 中的 PredicateBuilder 类:
公共静态类 PredicateBuilder { public static Expression> True() { return f => true; } 公共静态表达式> False() { return f => false; }
表达式> expr1, 表达式> expr2) { var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast()); return Expression.Lambda> (Expression.OrElse(expr1.Body, invokedExpr), expr1.Parameters); }
表达式> expr1, 表达式> expr2) { var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast()); return Expression.Lambda> (Expression.AndAlso(expr1.Body, invokedExpr), expr1.Parameters); } }
linq-to-sql - LINQ to SQL 谓词生成器
我使用 PredicateBuilder 在这里看到http://www.albahari.com/nutshell/predicatebuilder.aspx,一切都很好,现在我可以生成动态 LINQ to SQL 表达式,但我不明白的是为什么当我在这样的循环上:
为什么我必须使用那个临时变量?,我尝试使用“f”迭代器变量,但它只获取每次迭代的列表中的最后一个值,就像它通过引用传递一样......
linq-to-sql - PredicateBuilder 和嵌套谓词
我正在尝试使用来自Albahari的谓词来创建一个 TSQL 语句,例如:
或像这样的谓词:c => (c.VendorID = x || c.VendorID == x2 ...) && (c.FranchiseID == f || c.FranchiseID == f2 ...)
但我遇到了麻烦。这是我的尝试:
我的表有 60,000 行,所以去数据库并选择它们,然后过滤不是一个选项。Channel 是一个 LinqToSql 实体。此外,SelectedFranchises 或 SelectedVendors 可以为空,但不能同时为空。编辑:我还需要通过 channel.Franchise.Name 来区分这个列表。也许我应该只使用存储过程?
你会怎么做?
c# - 带有 OrderBy 的 Linqbuilder 查询
我有一个 1 : M 的关系。
我根据用户的输入构建了一个动态查询,以返回父实体及其子实体的列表(使用谓词构建器:
(成功完成 new TDataContext().Ps.Where(predicate) )...
但需要按仅在子实体上找到的字段对结果进行排序。
我不知所措: new TDataContext().Ps.Where(predicate).OrderBy(p => p.Cs. ??)
其中 Ps = 与 Cs = 子实体的父集合关系
任何帮助表示赞赏。
linq-to-sql - T-SQL 选择与 ISNUMERIC 匹配且也在指定范围内的值。(加上 Linq-to-sql)
我正在尝试从 (NVARCHAR) 列之一在数字范围内的表中选择行。
不幸的是,作为 SQL 规范的一部分,AND 子句不必短路(在 MSSQL Server EE 2008 上也不必)。更多信息:是否评估了 SQL WHERE 子句短路?
我的下一个尝试是尝试这个,看看我是否可以实现对 CONVERT 的延迟评估
但我似乎无法将 < (或任何比较)与 CONVERT 的结果一起使用。它因错误而失败
我可以逃脱
因此,显而易见的解决方案是将整个 select 语句包装在另一个 SELECT 和 WHERE 中,并从内部选择返回转换后的值,并在外部选择的位置进行过滤。不幸的是,这就是我的 Linq-to-sql 问题出现的地方。我不仅按一个范围过滤,而且按许多可能进行过滤,或者只是按记录的存在(有一些日期范围选择和比较我已经遗漏了。 )
本质上我希望能够生成这样的东西:
(在每个 where 选项中都有一些其他子句。)如果我在内部选择中过滤掉非 ISNUMERIC 值,这显然不起作用。
正如我提到的,我正在使用 Linq-to-sql(和 PredicateBulider)来构建这些查询,但不幸的是
被转换成这会导致最初的问题失败。
对于每个比较,我最后的手段必须是针对同一张表上的双重选择进行外部连接,但这并不是一个真正的想法解决方案。我想知道是否有人以前遇到过类似的问题?
c# - 如何将谓词构建器与 linq2sql 和 OR 运算符一起使用
我有两个表(TABLE1,TABLE2 - 我知道是唯一的),它们分别具有一对多的关系,并且两个表的 ID 列之间都有一个外键。
使用linq2sql我试图选择所有TABLE1条目,以便它们对应的TABLE2值在我传递的列表中至少包含一项。
这是我在LINQPad(很棒的程序)中使用的一些示例代码来测试它,但是我收到错误NotSupportedException:不支持的重载用于查询运算符'Any'。
更新
在 LinqPad 中使用 LinqKit 时,添加对 LinqKit.dll 的引用,取消选中 Include PredicateBuilder,然后在 Additional Namespace Imports 选项卡下添加 LinqKit。
sql - 如何在 Linq 中使用 PredicateBuilder 和嵌套 OR 条件
我一直非常高兴地使用 PredicateBuilder,但直到现在只将它用于只有连接 AND 语句或 OR 语句的查询。现在我第一次需要一对嵌套的 OR 语句和一些 AND 语句,如下所示:
使用来自Albahari的文档,我构建了这样的表达式:
这会导致 SQL 完全忽略 2 OR 短语。
如果我尝试仅使用 OR 短语,例如:
我得到了预期的 SQL,如:
如果我尝试仅使用 AND 短语,例如:
我得到如下 SQL:
这与第一个查询完全相同。看起来我很接近它一定是我错过的一些简单的东西。谁能看到我在这里做错了什么?
谢谢,
特里