问题标签 [linq-expressions]
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.
reflection - 如何判断类中的属性是否由 AutoMapper 映射?
我正在开发一个与 AutoMapper 紧密集成的项目(完全开源)。我要做的是:我想知道,在运行时,哪些是 AM 注册的映射,不仅在类之间,而且我需要知道当时是否映射了特定类中的特定属性,如果不是我需要映射它,如果是这样,我会忽略,但以一种或另一种方式,我需要将该属性的名称或完整路径保存为字符串。
例如:
1 - foo.bar(必须为“Foo”类保留属性“bar”) 2 - foo.Bar.Foo.Bar.Name(需要为“Foo”类存储完整路径“Bar.Foo.Bar.Name” ")
事实上,我可以做到这一点,但有一些特性可以从我的实现中逃脱。
到目前为止,包含我所做的方法的类位于 BitBucket 的存储库中: https ://bitbucket.org/Lunadie/telerikmvcgridcustombindinghelper/src/5e3b8301719d/TelerikMvcGridCustomBindingHelper/Mapper/GridModelMapperBase.cs
特别是“CanPassToAutoMapper”和“GetPropertyMap”这两个方法看起来有点脆弱,容易出错,你怎么看?
entity-framework - 使用 OrElse 和 AndAlso 表达式方法的异常
我正在尝试以编程方式构建表达式树。
我的输入中有一个条件类列表,其格式如下:
当我构建对象时,我通过以下方式为每个条件Expression
创建一个Expression
Filter.ToExpression() 方法是这样实现的
当我有一个条件时一切正常,但是当我尝试使用And
, Or
, AndAlso
,OrElse
静态方法之一组合表达式时,我收到一个InvalidOperationException
说:
2[MyObject,System.Boolean]' and 'System.Func
没有为类型“System.Func 2[MyObject,System.Boolean]”定义二元运算符 Or 。
我有点困惑。有人可以更好地解释异常的原因并提出解决方案吗?
非常感谢!
vb.net - 带有 Linq to Entity 的 Linq 表达式
我试图在扩展方法中包装一些重复的代码,以清理一下。
我试图避免的模式是检查字符串(通常是控件的文本值)是否为空/空,如果是,则使用包含将其与我的数据中的字段进行比较。显然,该字段没有硬编码到我的扩展中,对象类型也没有。
我所拥有的在 Linq to Objects 中完美运行,但我收到通用运行时错误“LINQ to Entities 无法识别方法‘System.String Invoke(GenericQueryHelper.Customer)’方法,并且此方法无法翻译成商店表达。” 使用实体框架模型时。
这是我所拥有的:
我也试过:
以相同的结果...
首先,这可能吗?我希望我的用法看起来像这样:
我确实需要在 SQL 数据库上运行它,因为它正在过滤结果,所以我不想在内存中这样做。有人有什么想法吗?
linq - Linq To 实体中的表达式树
我正在尝试创建一个扩展方法,该方法接受一个指向实体上的属性的表达式,以及一个将其与 using 进行比较的常量字符串,它String.Contains
首先检查字符串是空还是空,并且仅在以下情况下应用过滤器字符串有一个值。这是我第一次涉足表达式树,所以我不太确定发生了什么,我现在有一个例外,我不知道如何治愈......
到目前为止,我在这里:
我这样称呼它,DbContext
因为我有一个Customer
带有FirstName
字符串属性的实体:
例外是:
有什么想法吗?
c# - LINQ 表达式创建具有不同对象类型的数组
我正在对用户输入进行一些解析,在这里我需要解析应该是特定类型的参数数组。
在解析的那一刻,我不知道每个参数应该是哪个类型,但它可以被评估为任何类型。所以,我决定将它们临时存储在一个对象数组中。但是当我尝试做这样的事情时:
我得到以下异常:“System.Int32”类型的表达式不能用于初始化“System.Object”类型的数组。
也就是说,我想,因为没有发生隐式装箱。所以我自己装箱:
到目前为止一切顺利:我得到了数组中各种类型的对象列表。
但是,当我最终获得所需的类型时,我尝试将所有值从上部数组转换为该类型(假设该类型通常是 int)我将其转换:
当 expr 实际上是字符串“aaaaa”时,这是两个命令的调试视图:
现在,这是我的问题:这不会引发异常。但它会在最终编译表达式时。我的意思是,字符串不是整数。
也许这真的不应该抛出异常,我不知道。但这对我不起作用。
有办法治愈吗?
编辑:代码如下所示:
c# - 如何编写设置 Moq 对象期望的通用方法?
方法 M 采用 2 个参数,P1 和 P2。P2 是代表。我想告诉一个模拟对象,“每当使用参数 P1 调用方法 M 时,调用 P2 并将对象 O 传递给它。” 我正在使用起订量。
以下方法有效,但似乎有点冗长。
我想将最后一点重构为通用辅助方法,以便我(和未来的测试作者)只需要编写如下内容:
最大的问题是:该辅助方法中会包含什么?到目前为止,我已经取得了部分成功,但我想知道是否有任何方法可以做到这一点。
第一次尝试(无效)
我可以这样调用这个方法:
事实证明,Moq 不喜欢我传递给 Setup 方法的内容。它抛出一个异常,说“表达式不是方法调用”。
第二次尝试
在这种方法中,我对 LINQ 表达式进行了一些操作(我以前从未做过)。
这个方法可以这样调用。
这行得通,如果有必要,我可能会接受这样的事情。不幸的是,如果我不小心调用了错误的 DataCacheMock 方法(可能它有一个采用字符串而不是 int 的重载),那么我会得到一个运行时错误而不是编译时错误。
第三次尝试
此版本从您传递给它的表达式中获取模拟对象,因此您在调用辅助方法时不必两次提及模拟对象:
但是,这种方法仍然存在与类型相同的问题。
我(和未来的测试作者)可能会处理顶部提到的冗长语法,我们可能会处理较低的类型安全性,因为测试会失败。不过,我仍然想看看最小起订量是否可行;我已经在兔子洞里走了这么远。:-)
c# - 将 lambda 表达式转换为用于缓存的唯一键
我看过与此类似的其他问题,但找不到任何可行的答案。
我一直在使用以下代码生成唯一键,用于将 linq 查询的结果存储到缓存中。
它似乎适用于包含整数或布尔值的简单查询,但是当我的查询包含嵌套的常量表达式时,例如
因此返回的键是:
(True AndAlso (Farm.Crops.Any(y => (value(OzFarmGuide.Controllers.FarmController+<>c__DisplayClassd).slug == y.Slug)) AndAlso (Farm.Deleted == False)))
如您所见,我通过的任何作物名称都会给出相同的关键结果。有没有办法可以提取给定参数的值,以便区分我的查询?
也将转换为y
正确的类型名称会很好......
reflection - 使用 EF4.1 进行动态流利映射
我想动态创建我的数据模型来处理一些现有的类和一个自定义 XML 映射文件,因为我有很多现有的表和很多现有的业务类(我不知道可能很疯狂)。
对于使用不同列名或不对应于现有列的属性,我想调用 .Ignore() 和 .HasColumnName() 但我想动态地执行此操作。
所以我希望能够进行这样的调用,但我想根据反射和使用 Linq.Expressions 的 XML 配置文件动态地调用它们(我从来没有机会使用过):
或者
这就是我正在尝试的(最终我将参考我的 XML 映射来确定要映射哪些属性以及要忽略哪些属性):
但我的 lambda 表达式不正确:
c# - 你如何制作一个包含对 Any() 的调用的 System.Linq.Expressions.Expression 对象
我想动态生成一个可以用作过滤器的 linq.expressions.expression 语句。
这是我想转换为表达式的示例 Linq 查询:
这是我的尝试
请协助。
c# - 将 Linq 表达式传递给函数
我想将一个类的属性列表传递给一个函数。在基于属性列表的函数中,我将生成一个查询。与 Linq Select 方法中的功能完全相同。在这里,我将为 Ingress 数据库实现此功能。
举个例子,
在前端我想像这样运行一个选择,
我的实体类是这样的
我想像这样调用 Select 函数,
然后,使用结果我可以获得名称和地址属性的值。
我认为我的 Select 函数应该是这样的,
(*我认为这应该使用 Linq 表达式来完成。但我不确定输入参数和返回类型是什么。*)
这是尝试创建类似于 Linq 的功能。但我不是 Linq 表达式方面的专家。
麻省理工学院有一个名为DbLinq的项目,但它是一个大项目,我仍然无法从中获得任何帮助。
有人可以帮我开始这个吗,或者有人可以链接我一些有用的资源来阅读这个。