c# - 当您在需要 Expression 的地方使用自定义方法时,如何创建 C# 编译错误?

标签 c# linq linq-to-sql

当您在需要 Expression 的地方使用自定义方法时,如何创建 C# 编译 错误?

确实,从技术上讲,包含对自定义方法的调用的 Lambda 表达式也是表达式。但由于 LINQ to SQL、LINQ to JSON 等表达式的使用者不期望它,它们会抛出运行时错误。

可以做些什么来让编译器知道像 LINQ to SQL 等框架期望什么,什么是不允许的。

最佳答案

无可奈何,原因如下:

  1. 包含方法调用的 lambda 表达式 (!) 仍然是表达式
  2. 并非所有的方法调用都是非法的。一些方法被理解并正确翻译。因此,即使您找到一种方法只允许不调用方法的 lambda 表达式,您也会禁止所有方法调用,甚至是有效的方法调用。

关于c# - 当您在需要 Expression 的地方使用自定义方法时,如何创建 C# 编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7552788/

相关文章:

c# - 该流不支持seek操作,使用stream

c# Linq - 这是删除记录的好设计吗?

c# - 在 C# 应用程序中使用 LINQ to SQL 的最佳实践方法是什么? [设计模式]

c# - 通过 WSDL url 使用 Web 服务

c# - 来自字符串的动态 if 条件

c# - 修复方法覆盖中的 "CS8603: Possible null reference return"

c# - NHibernate LINQWhere 和 Any 抛出异常

c# - 使用 LINQ Where 与 Find 从业务对象列表中检索给定业务对象的正确方法是什么?

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'ClientDetails' 中为标识列插入显式值

linq - LINQ to SQL 中的多个延迟 WHERE 子句表达式