问题标签 [linqkit]
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.
entity-framework - EF 5.0 是否有 LINQKit 版本?否则我还能为 EF 5.0 使用什么?
在那里,我只看到最新的 LINQKit 版本取决于 EF 6.0.2,我需要在 EF 5.0 上安装,是否有旧的 LINQKit 版本以兼容 EF 5.0?或者其他东西来代替它(.Expand() 功能)?
c# - 删除其他表mvc3 c#中的现有字段
我有一个删除操作方法,我想在 catch 中添加一个验证错误:我想从表 T_CONSTANTE 中删除一个名为 NOM 的属性,另一个表 Y 在她的名为 FORMULE 的字段中包含该属性我的方法
` 我必须使用 linqkit 来继续 if() 但我不明白如何使用它
c# - 从表达式创建动态 Linq 选择子句
假设我定义了以下变量:
现在,我想在 IQueryable 中添加一些动态字段,以便它返回一个IQueryable<ExtendedMyClass>
,其中ExtendedMyClass
定义为:
换句话说,对于 中的每个值extraFields
,我希望有一个值来ExtendedMyClass.ExtraFieldValues
表示该表达式对该行的计算结果是否为 True。
我觉得这在动态 Linq 和 LinqKit 中应该是可行的,尽管我以前从未认真使用过。我也愿意接受其他建议,特别是如果这可以在良好的强类型 Linq 中完成。
我正在使用 Linq to Entities,因此查询需要转换为 SQL。
c# - 试图在子集合表达式中使用父属性作为参数;LinqKit 抛出“无法将 MethodCallExpressionN 转换为 LambdaExpression”
我正在尝试动态构造一个类似于下面的表达式,我可以在其中使用相同的比较函数,但是可以传入正在比较的值,因为该值是从属性“更高”中传递的询问。
我相信我已经正确构建了查询,但是ExpressionExpander.VisitMethodCall(..)
当我尝试使用该方法时会引发以下异常:
“无法将'System.Linq.Expressions.InstanceMethodCallExpressionN'类型的对象转换为'System.Linq.Expressions.LambdaExpression'”
在实际代码中,使用 Entity Framework 和 actual IQueryable<T>
,我经常得到:
“也无法将'System.Linq.Expressions.MethodCallExpressionN'类型的对象转换为'System.Linq.Expressions.LambdaExpression'”。
我已经为我的问题构建了一个对 LinqPad 友好的示例,尽可能简单。
如果我做的事情明显错了,我真的很感激朝着正确的方向轻推!谢谢。
编辑:我知道以下方法会起作用:
但是,我试图将比较与参数的位置分开,因为比较可能很复杂,我想将它重新用于许多不同的查询(每个查询的两个参数都有不同的位置)。还打算通过另一个表达式实际计算其中一个参数(在示例中为“最小长度”)。
编辑:对不起,我刚刚意识到,当尝试针对我的示例代码时,一些答案会起作用,因为我的示例只是伪装成一个IQueryable<T>
但仍然是一个List<T>
底层。我首先使用 LinqKit 的原因是因为IQueryable<T>
来自 EntityFramework DbContext 的实际将调用 Linq-to-SQL,因此必须能够由 Linq-to-SQL 本身解析。LinqKit 通过将所有内容扩展为表达式来实现这一点。
解决方案!感谢Jean在下面的回答,我想我已经意识到我哪里出错了。
如果某个值来自查询中的某个位置(即不是事先已知的值),那么您必须将它的引用/表达式/变量构建到表达式中。
在我的原始示例中,我试图传递从表达式中获取的“minLength”值并将其传递给一个方法。该方法调用无法预先完成,因为它使用了表达式中的值,并且无法在表达式中完成,因为您无法在表达式中构建表达式。
那么,如何解决这个问题呢?我选择编写我的表达式,以便可以使用附加参数调用它们。虽然这有一个缺点,即参数不再“命名”,我最终可能会得到一个Expression<Func<int, int, int, int, bool>>
或一些东西。
vb.net - 无法将 FieldExpression 转换为 LambdaExpression
我编写了以下函数来检查数据库中重叠时间段的添加/修改记录:
调用函数时如下:
我收到以下错误:
InvalidCastException:无法将“System.Linq.Expressions.FieldExpression”类型的对象转换为“System.Linq.Expressions.LambdaExpression”类型。
我没有看到我正在使用任何字段表达式—— ActivistID
, FromDate
,TillDate
都是属性。
我正在使用 EF5 并生成 POCO 类。
我该如何解决这个问题?
更新
如果我criteriaExpr.Expand
在 Watch 窗口中输入,则不会出现异常。但是,如果我输入,criteriaExpr.Expand.Compile
我会得到同样的异常。
wcf-data-services - 我们可以将 LINQKIT 与 WCF 数据服务一起使用吗
我在网上找不到任何资源,其中包含将 LINQKIT 与 WCF 数据服务一起使用的示例。可能吗 ?我试图这样做,但它在方法访问中的 ExpressionVisitor 类中失败,错误 - 未处理的表达式类型 10000。
throw new Exception (string.Format ("Unhandled expression type: '{0}'", exp.NodeType));
有没有其他选择。
表达式示例如下所示。它构建成功,但在运行时出现上述错误。
c# - 使用 Linq to SQL 将 FieldExpression 转换为 LambdaExpression 时出错
Unable to cast object of type 'System.Linq.Expressions.FieldExpression' to type 'System.Linq.Expressions.LambdaExpression'
运行以下代码时出现错误。
此代码的目的是允许我过滤包含某些字符串的记录(实体框架代码优先/Linq to SQL)。
注意:我正在使用第三方库 LinqKit:http ://www.albahari.com/nutshell/predicatebuilder.aspx
...
关于如何重写它以避免上述错误的任何建议?
注意:CodeReview 上的代码也是我与重构相关的原始问题。 https://codereview.stackexchange.com/questions/54888/refactor-c-linq-code-to-reduce-duplication
c# - LinqKit 子表达式调用很慢
我们有 LinqKit 表达式从 EF 上下文对象返回对象:
DbItemAToFlatItemA 和 DbItemBToFlatItemB 包含许多字段,但是当直接调用它们时,会很快生成 SQL,但是当调用 DbItemCToFlatItemC 时,从 LINQ 生成 SQL 需要很长时间 - 比 DbItemAToFlatItemA 和 DbItemBToFlatItemB 多得多。
生成的 SQL 非常完美,运行速度很快,但我不明白为什么生成它需要这么多时间
有任何想法吗 ?
谢谢你。
c# - LinqKit Predicate Builder 抛出 TypeLoadException?
我在尝试执行使用 PredicateBuilder 动态构建的查询时遇到问题。
我能够构建查询,但是在执行查询本身时,我得到以下“TypeLoadException”......
运行时: return context.SearchRecords.AsExpandable().Where(predicate).ToList();
无法从程序集“EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”加载类型“System.Data.Entity.Infrastructure.IDbAsyncEnumerable`1”。
我已经用这个拉了很长时间了,我已经检查了在线示例等,我似乎做的一切都是正确的,所以我希望这能奏效。
项目使用 .NET Framework 4.5 构建并使用 Entity Framework 6。
提前致谢!
c# - 将 LINQ 转换为普通的 Foreach
我在我们的一个项目中发现了下面的一段代码。我被困了两天:-(试图理解 Aggregate & LinQKit Expand。
您可以帮助将 LINQ 以下转换为正常的 foreach 操作吗?
或者至少,任何关于这个 LINQ 表达式在列表中所做的事情的指针都会非常有帮助。