gpt4 book ai didi

c# - LINQ to 自定义查询语言?

转载 作者:太空狗 更新时间:2023-10-30 01:08:11 26 4
gpt4 key购买 nike

我正在编写一个需要来自源的数据的工具。此源将由用户指定,可能是 SQL 后端、专有数据库、平面文件系统等。

我希望我的界面能够获取这些类型的查询,以使用 Linq,因为它似乎对 C# 最友好,并且可以利用大量 .NET 代码。

我一直在做一些研究,并开始通过很棒的教程 here 构建一个 IQueryProvider .它帮助我完成了大部分工作,但现在我对让用户将表达式树转换为他们的自定义代码的最佳方式感到困惑。

我正在尝试找出最好的方法来为用户提供一个简单的界面来指定如何将表达式树转换为自定义“代码”(即“SQL”),但它看起来相当麻烦和复杂——我想是因为它确实如此。

我的问题是,将表达式树转换为自定义语言的最佳方法是什么?

我能说的最近的是我要使用“上下文”类来执行我的自定义解析逻辑,但我使用的 API 似乎相当低级别 - 是否有任何更高级别的操作我可以简单地将操作映射到字符串?

最佳答案

没有简单或直接的方法可以将表达式树转换为您的自定义查询语言。您可能想尝试一下 LinqExtender

http://mehfuzh.github.com/LinqExtender/

它实现了一个访问者模式,用于在 linq 和您的 dsl 之间进行转换。

LinqExtender is a toolkit for building custom LINQ providers. It provides an abstracted layer over the original IQyeryable and IQueryProvider implementation and provides a simplified syntax tree. Moreover, it covers things like projection , method calls , ordery by , member parsing, etc internally. Therefore developer can focus more on his main task minus the complexity

.

关于c# - LINQ to 自定义查询语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304452/

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