问题标签 [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.
c# - 在运行时使用 LINQKIT 将 linq 连接到对象或查询
我有一个包含多个值 3、5、10 的列表。
现在我想.where
在运行时使用 Or 运算符创建一个 linq 过滤器。
如何使用 LINQKit 做到这一点?或者使用普通的 linq,但我认为它不可能。
例如,这将是一个硬编码版本:
这将动态过滤 mydata 数组。
但我不希望它被硬编码!
c# - 使用 linqkit 时出现异常:无法将 TypedParameterExpression 类型的对象转换为 LambdaExpression 类型
我第一次没有设法找到我的问题的现有答案。
基本上我有一个通用表达式来允许过滤 IQueryable 使用的活动项目:
表达式的实现:
我已经简化了返回线以突出问题。它一直有效,直到我尝试使用这两个函数中的任何一个,在本例中为“to(o)”。
在此处使用 linqkit 时失败:
除了“附加信息:无法将‘System.Linq.Expressions.TypedParameterExpression’类型的对象转换为‘System.Linq.Expressions.LambdaExpression’类型。”
现在我从来没有以这种方式传递一个函数并在表达式中使用它,我的 google-fu 也没有找到对这个异常的任何引用。我不确定我正在做的事情是否可能......任何帮助将不胜感激!
c# - 如何组合相似类型的表达式?
我有两个相同类型的表达式:
我想将这两个表达式结合起来,这样在语义上它就变成了
但即使使用 LinqKit,我也找不到正确的语法。
var exprC = exprA.Invoke(exprB); // 不起作用
你怎么做到这一点?
entity-framework - 如何使用 AsExpandable 包含具有过滤条件的相关实体
我想包含一些过滤条件的相关实体。这可能吗 ??我不想为此编写投影查询。所以我试图通过下面的代码来实现这一点......但它不起作用。
我的域对象
我的存储库代码
对此的最佳做法或最佳解决方案是什么?
提前致谢 :)
c# - 是否可以将 LinqKit PredicateBuilder 作为子查询插入?
我目前有一个有效的多级谓词,如下所示......
这很好,除了据我所知它正在以...的形式生成查询
当我真正应该制作的只是......
有没有办法在查询的子级别插入谓词,如下所示?到目前为止,我目前的尝试都失败了。
提前谢谢了。
c# - 在 LINQ 表达式 Linqkit 中检测到循环
例如,我有一种表达方式x=>x.Id
;
我有一个函数,我需要组合两个表达式。我使用 Linqkit 。
我的模型:
比我想在我的存储库中传递它,我需要对我的实体进行排序。
c# - StackOverflowException 使用 Linq(Kit) 处理嵌套数据
我正在尝试使用 Linq/LinqKit 构建嵌套查询。从理论上讲,这似乎很容易。但我坚持实际的部分。
在我的数据库中,我有一个表,它具有对其父级的自引用。在我的 linq-query 中,我现在想选择给定元素的所有父元素(以及这个元素的父元素,依此类推)。
在我的代码中,我在部分类中有以下表达式MyTable
:
设置时应该选择给定实体的父级和那些父级ParentId
。
查询本身(简化):
运行此代码以 an 结束,StackOverflowException
因为未命中停止条件,因此Parents
-call 无休止地嵌套,直到堆栈已满。
有什么想法可以做到这一点还是不可能?或者是否有其他方法可以在一个查询中使用Linq
/获取嵌套数据?LinqKit
我已经尝试将上下文传递给表达式以创建子查询(也不起作用):
c# - 使用 LinqKit 在 c# 中构建表达式
true
如果提供了查询参数,有没有办法忽略初始表达式
现在它总是返回一切,因为表达式等于 true OR something OR Something。
如果我将初始表达式更改为 false,那么它将永远不会返回任何数据。
c# - 静态表达式作为动态 linq 查询的实例属性
我正在使用 的修改版本,LinqKit
以便将我的扩展程序放在一个地方。
因此,我在每个实体类中都有一个单独的部分来定义我的表达式,例如tblMain
:
在查询中,我现在可以写这样的东西
这将返回我所有可见的表条目tblMain
。
我想知道是否有任何方法可以不拥有这个静态属性。这将使我能够使用Interfaces
like在特定类型上IVisibilityEntity
强制使用公共属性。IsVisible
现在我已经结束了:
但这给了我一个例外
InvalidOperationException:从范围“”引用的“tblMain”类型的变量“m”,但未定义。
Expression.Constant(this, typeof(tblMain))
用作第二个参数时相同。
我想要的是一个像这样的查询
这似乎没有太大的变化。但我真的希望能够使用接口功能来描述我的底层数据库模型。
通过接口,它还允许检查,例如if(myEntity is IVisibilityEntity)
做特定的可见性。
任何想法,如果这是可能的,以及如何实现这一点?
编辑 1
从第一条评论开始。我用来LinqKit
为子查询启用相同的逻辑:
上面的查询将为我提供所有可见的主条目及其相关(也是可见的)子条目。但这只是简单的写作是不可能的,m.tblSub.Where(tblSub.IsVisible)
因为这表明
c# - Linqkit 中使用 PredicateBuilder 的通用查询
很长一段时间以来,我一直在使用LinqKit创建通用查询。
一直困扰我的一件事是您总是必须测试过滤器中发送的值是否有效。
例如:假设我有一个字符串过滤器。条件可以是 Equal、StartsWith、EndsWith 和 Contains。
我的方法看起来像这样:
为了结束这一堆 If,我决定创建一个通用方法来将过滤器应用于属性。我的想法是传递将应用过滤器的属性,以及过滤器定义,并封装表达式创建逻辑
这将是以下类型:
为此,我创建了一些扩展方法来处理这个
问题是没有应用过滤器,答案就在上面的 Invoke 中。EF 无法将上述表达式转换为 SQL。EF错误是
Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory[8] LINQ 表达式 '(__property_0.Invoke([x]) == __filter_Value_1)' 无法翻译,将在本地进行评估。要配置此警告,请使用 DbContextOptionsBuilder.ConfigureWarnings API(事件 ID 'RelationalEventId.QueryClientEvaluationWarning')。当覆盖 DbContext.OnConfiguring 方法或在应用程序服务提供者上使用 AddDbContext 时,可以使用 ConfigureWarnings。
问题是:
我怎样才能使这个建筑工作?另外,关于如何最好的任何建议?