gpt4 book ai didi

c# - 是否可以使用 dart 将 linq lambda 表达式转换为 SQL?

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:36 26 4
gpt4 key购买 nike

我知道可以在 dart 中创建类似 linq 的表达式,如下链接所示:

https://github.com/dartist/101LinqSamples

但是,我想知道是否有可能实现与 C# 和 Java8 相同的方法,即。将 lambda 表达式转换为 SQL,如下链接所示:

https://code.google.com/p/lambda-sql-builder/

最佳答案

我不认为这对于内置方法(where 等)是可能的;而且我不确定您是否可以在没有大量工作(和变压器)的情况下自己构建它。

在 C# 中,Where EF 中使用的方法不一样 Where您在 IEnumerable<T> 上看到的方法,而是 IQueryable<T> 上的扩展方法.方法签名不同:

// IEnumerable<T>
Where<T>(this IEnumerable<T> source, Func<T, Boolean> predicate)
// IQueryable<T>
Where<T>(this IQueryable<T> source, Expression<Func<T, Boolean>> predicate)

Expression的使用很重要;这意味着该方法获取有关传递的 lambda 的附加信息,并且可以从其中的(支持的)运算符向下构建 SQL 的表达式。

我不知道 Dart 中有什么允许对表达式进行类似的分解。镜像可以让你检查类型,但我认为它们不能检查任意的 Dart 表达式。

然而,变形金刚可能会有所帮助。获取文档的 AST 并沿着它寻找对 where() 的调用应该不难。在您的特殊“数据库类型”上,然后重写它们。我怀疑这样做会涉及更多 StackOverflow 问题!

关于c# - 是否可以使用 dart 将 linq lambda 表达式转换为 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22852177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com