问题标签 [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.

0 投票
1 回答
112 浏览

c# - 在运行时使用 LINQKIT 将 linq 连接到对象或查询

我有一个包含多个值 3、5、10 的列表。

现在我想.where在运行时使用 Or 运算符创建一个 linq 过滤器。

如何使用 LINQKit 做到这一点?或者使用普通的 linq,但我认为它不可能。

例如,这将是一个硬编码版本:

这将动态过滤 mydata 数组。

但我不希望它被硬编码!

0 投票
0 回答
310 浏览

c# - 使用 linqkit 时出现异常:无法将 TypedParameterExpression 类型的对象转换为 LambdaExpression 类型

我第一次没有设法找到我的问题的现有答案。

基本上我有一个通用表达式来允许过滤 IQueryable 使用的活动项目:

表达式的实现:

我已经简化了返回线以突出问题。它一直有效,直到我尝试使用这两个函数中的任何一个,在本例中为“to(o)”。

在此处使用 linqkit 时失败:

除了“附加信息:无法将‘System.Linq.Expressions.TypedParameterExpression’类型的对象转换为‘System.Linq.Expressions.LambdaExpression’类型。”

现在我从来没有以这种方式传递一个函数并在表达式中使用它,我的 google-fu 也没有找到对这个异常的任何引用。我不确定我正在做的事情是否可能......任何帮助将不胜感激!

0 投票
2 回答
54 浏览

c# - 如何组合相似类型的表达式?

我有两个相同类型的表达式:

我想将这两个表达式结合起来,这样在语义上它就变成了

但即使使用 LinqKit,我也找不到正确的语法。

var exprC = exprA.Invoke(exprB); // 不起作用

你怎么做到这一点?

0 投票
2 回答
331 浏览

entity-framework - 如何使用 AsExpandable 包含具有过滤条件的相关实体

我想包含一些过滤条件的相关实体。这可能吗 ??我不想为此编写投影查询。所以我试图通过下面的代码来实现这一点......但它不起作用。

我的域对象

我的存储库代码

对此的最佳做法或最佳解决方案是什么?

提前致谢 :)

0 投票
0 回答
427 浏览

c# - 是否可以将 LinqKit PredicateBuilder 作为子查询插入?

我目前有一个有效的多级谓词,如下所示......

这很好,除了据我所知它正在以...的形式生成查询

当我真正应该制作的只是......

有没有办法在查询的子级别插入谓词,如下所示?到目前为止,我目前的尝试都失败了。

提前谢谢了。

0 投票
1 回答
488 浏览

c# - 在 LINQ 表达式 Linqkit 中检测到循环

例如,我有一种表达方式x=>x.Id

我有一个函数,我需要组合两个表达式。我使用 Linqkit 。

我的模型:

比我想在我的存储库中传递它,我需要对我的实体进行排序。

0 投票
1 回答
448 浏览

c# - StackOverflowException 使用 Linq(Kit) 处理嵌套数据

我正在尝试使用 Linq/LinqKit 构建嵌套查询。从理论上讲,这似乎很容易。但我坚持实际的部分。

在我的数据库中,我有一个表,它具有对其父级的自引用。在我的 linq-query 中,我现在想选择给定元素的所有父元素(以及这个元素的父元素,依此类推)。

在我的代码中,我在部分类中有以下表达式MyTable

设置时应该选择给定实体的父级和那些父级ParentId

查询本身(简化):

运行此代码以 an 结束,StackOverflowException因为未命中停止条件,因此Parents-call 无休止地嵌套,直到堆栈已满。

有什么想法可以做到这一点还是不可能?或者是否有其他方法可以在一个查询中使用Linq/获取嵌套数据?LinqKit

我已经尝试将上下文传递给表达式以创建子查询(也不起作用):

0 投票
2 回答
533 浏览

c# - 使用 LinqKit 在 c# 中构建表达式

true如果提供了查询参数,有没有办法忽略初始表达式

现在它总是返回一切,因为表达式等于 true OR something OR Something。

如果我将初始表达式更改为 false,那么它将永远不会返回任何数据。

0 投票
1 回答
676 浏览

c# - 静态表达式作为动态 linq 查询的实例属性

我正在使用 的修改版本,LinqKit以便将我的扩展程序放在一个地方。

因此,我在每个实体类中都有一个单独的部分来定义我的表达式,例如tblMain

在查询中,我现在可以写这样的东西

这将返回我所有可见的表条目tblMain

我想知道是否有任何方法可以不拥有这个静态属性。这将使我能够使用Interfaceslike在特定类型上IVisibilityEntity强制使用公共属性。IsVisible

现在我已经结束了:

但这给了我一个例外

InvalidOperationException:从范围“”引用的“tblMain”类型的变量“m”,但未定义。

Expression.Constant(this, typeof(tblMain))用作第二个参数时相同。

我想要的是一个像这样的查询

这似乎没有太大的变化。但我真的希望能够使用接口功能来描述我的底层数据库模型。

通过接口,它还允许检查,例如if(myEntity is IVisibilityEntity)做特定的可见性。

任何想法,如果这是可能的,以及如何实现这一点?

编辑 1

从第一条评论开始。我用来LinqKit为子查询启用相同的逻辑:

上面的查询将为我提供所有可见的主条目及其相关(也是可见的)子条目。但这只是简单的写作是不可能的,m.tblSub.Where(tblSub.IsVisible)因为这表明

0 投票
1 回答
2296 浏览

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。

问题是:

我怎样才能使这个建筑工作?另外,关于如何最好的任何建议?