问题标签 [dynamic-linq]

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 回答
538 浏览

c# - 如何在 ITypedList 上做 Linq?

到目前为止,我发现 Linq 可以用于类的现有字段和属性,而不是虚拟属性。换句话说,ITypedList 不能与 Linq 一起工作,即使是动态 Linq。

我尝试了以下代码:

然后,我遇到了“'Contact'类型中不存在linkedPropertyName或'Customer'字段”的异常。

我跟踪到动态 Linq 并发现以下代码引发了异常:

在 Expression ParseMemberAccess(Type type, Expression instance) 的方法中。

很明显,Linq 只支持字段和属性的真实成员。

但我仍然希望有人可能已经找到了一种在虚拟属性上执行 Linq 的方法。

如果您找到了方法,请分享您的经验。

先感谢您,

0 投票
1 回答
355 浏览

.net - 动态 GroupBy 是否与动态 LINQ 中的动态 Where 一起使用?

我将此动态 LINQ 库与 Linq-to-Entities 一起使用。
我建立查询,然后用foreach(object e in query){}

query=db.Table1.Where("it.FieldA>10").Select("it.FieldB");作品。
query=db.Table1.Where(e=>e.FieldA>10).GroupBy("it.FieldB", "it").Select("key")作品。
query=db.Table1.Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key")原因EntitySqlException与消息The query syntax is not valid., near keyword 'FROM', line 2, column 1.符合foreach声明。

我怎样才能让它毫无例外地工作?

注意 type ofdb.Table1.Where(e=>e.FieldA>10)IQueryable<Table1>,但 type of db.Table1.Where("it.FieldA>10")is System.Data.Objects.ObjectQuery<Table1>

0 投票
2 回答
1758 浏览

c# - Linq.Dynamic GroupJoin 实施

我正在为 GroupJoin 的 Linq.Dynamic 项目创建一个扩展方法。但是,由于某种原因,它不会运行。签名似乎匹配。

这段代码给了我以下错误:

类型“System.Linq.Queryable”上没有通用方法“GroupJoin”与提供的类型参数和参数兼容。如果方法是非泛型的,则不应提供类型参数。

在查看每件作品的结果时,它们似乎是匹配的:编写以下 GroupJoin:

我得到了以下调试:

使用以下 GroupJoin:

然后看调试:

唯一不同的是List<T>与 IEnumerable 相比。但是List<T>是 IEnumerable。错误读起来就像签名错误。我就是想不通。

任何煽动都会很棒。

0 投票
3 回答
9133 浏览

c# - 使用动态字段名称使用 LINQ 查询实体

我在 ASP.NET MVC 中创建了一个动态搜索屏幕。我通过反射从实体中检索了字段名称,以便我可以允许用户选择他们想要搜索的字段,而不是在视图中显示所有字段。

当搜索结果回传到控制器时,我会收到一个包含 FieldName 和 Value 的 FormCollection。我不知道正在搜索多少字段,并且 FormCollection 仅包含用户选择的字段。

我现在希望能够在查询数据库时获取该字段名称并将其应用于我的 LINQ 语句,例如:

在我有“使用密钥字符串作为字段名”的地方,它就像 p => p.FirstName == fieldValueDictionary[key] where key = "FirstName"。我尝试过使用 Lambda 表达式树但失败了,并且在 Dynamic LINQ 方面取得了一些成功。唯一的另一种选择是执行以下操作:

更新:我通过以下帖子对 Lambda 表达式树进行了研究:

动态创建 lambdas 表达式 + linq + OrderByDescending

Expression.Lambda() 的参数问题

LINQ:将 lambda 表达式作为参数传递给方法执行和返回

我已经得到了一个 lambda 来输出以下内容:“p => p.FirstName”,但我无法让它在哪里工作。有什么建议么?我的代码如下:

0 投票
2 回答
1274 浏览

c# - 如何在动态 linq 查询中引用字段?

我有一个需要动态的查询,我认为我的大部分语法都是正确的,但我不知道如何给它我想要分组的列的名称。我尝试了几种不同的方法,但总是收到错误消息 - “'datarow' 类型中不存在属性或字段 'name'

我想我必须使用类似的东西,Field<string>("name")但我无法弄清楚。我在几个论坛上看到过这个问题,但似乎没有人明确回答如何解决这个问题。

0 投票
1 回答
132 浏览

linq-to-sql - DLinq 演变成哪一个——Linq to SQL 还是实体框架?

  1. 德林克怎么了?几年前我听说它被遗弃了。

  2. 它的某些代码是否用于创建 Linq to SQL 或 ADO.NET 实体框架?哪一个?也就是说,后两种技术中,哪一种是老DLinq的新化身?

我正在学习 ADO.NET Entity Framework,因为我刚刚开始,我相信这些问题的答案将帮助我更好地理解这个主题。我通常从了解技术主题的历史和背景开始。感觉就像是一场热身运动,让我增强了信心,并增加了学习更多知识的动力。此外,它还可以透视其他开发人员可能没有的东西。

在过去的几个月里,我阅读了 Linq to Objects 和 Linq to SQL,并且还比较了 Linq to SQL 生成的样板文件与 Entity Framework 的实体模型工具生成的样板文件。

我可以在某种程度上理解内在函数,这两个模型的DataContext/ObjectContext关系如何,以及前者如何使用Table<T>后者使用的ObjectQuery,两者都是IQueryable并因此支持标准的 Linq 查询运算符。

Linq to SQL 看起来更像是 DLinq 的翻版。

0 投票
1 回答
2929 浏览

linq-to-sql - 动态表名 linq-to-sql 动态 LINQ

我想根据用户选择的内容动态构建我的查询,并且我想在 LINQ-t0-SQL 中执行此操作。我见过这个,但我不想将 SQL 语句与数据上下文一起使用。

在谷歌上搜索了一下,我觉得这可以使用动态 LINQ 来完成。有人会提供动态 LINQ 的类似场景示例吗?

0 投票
1 回答
414 浏览

linq - Linq:动态查询构造:查询移动到客户端

我一直非常感兴趣地关注这里的对话:

使用 Linq 而不是 SQL 字符串构造查询

关于构建即使表名也是动态的表达式树。

为此,我创建了一个扩展方法 addWhere,如下所示:

[感谢 Timwi 提供该代码的基础]

哪个在功能上有效。

我可以打电话:

它在功能上等同于:

即,返回的行是相同的。

但是,我开始查看 sql 日志,并注意到以下行:

生成的查询是:

而当我使用这条线时

生成的查询是:

因此,比较现在发生在客户端,而不是被添加到 sql 中。

显然,这不是那么热。

老实说,我主要是从 Timwi 的(略有不同的)示例中剪切并粘贴了 addWhere 代码,所以其中一些内容超出了我的想象。我想知道我是否可以对此代码进行任何调整,因此表达式被转换为 SQL 语句,而不是在客户端确定

感谢您花时间阅读本文,我欢迎任何可以帮助我的评论、解决方案、链接等。当然,如果我通过其他方式找到解决方案,我会在这里发布答案。

干杯。

0 投票
1 回答
1088 浏览

c# - Entity Data Model, Dynamic Linq, multiple table dynamic Where clause, strongly typed return types

When writing a method for an oData service I have the below linq, for which I need to have a dynamic "where" clause to filter the results (the "new"s in the joins are for composite PKs in the Entity Data Model):

My Linq is not very good and I'm trying to use the DynamicQueryable class to generate a "where" clause at runtime (it's built from various variables):

Since the "where" clause filters on values in the Attribute and AttributeItem entities it invariably contains things like

which will fail at runtime since "No property or field 'Attribute' exists in type 'ProductListing'".

I have tried to build an anonymous type in the "select" which contains all elements of ProductListing entity and those from Attribute and AttributeItem which I require to filter by, but I need a strongly typed entity of type "ProductListing" to return from the method call.

Can ANYONE please help?? Should I be using dynamic Joins instead of dynamic Wheres? Is there a way of Where-ing against entities that you're not Selecting? Should I be selecting an anonymous type /"let" and building a strongly typed entity afterwards?

Please, any help is massively appreciated.

rposbo

0 投票
0 回答
408 浏览

c# - Dynamic Linq:没有外键的引用关系

我正在使用以下描述的 Dynamic Linq 功能:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

只要我只引用正确设置外键的对象,它就可以正常工作。

有没有办法引用一个没有设置外键的表?

即类似的东西: