gpt4 book ai didi

c# - 确定 MemberExpressions 目标的范围

转载 作者:行者123 更新时间:2023-11-30 22:50:40 25 4
gpt4 key购买 nike

这里有人有编写自定义 Linq 提供程序的经验吗?

我想做的是判断作为业务对象属性的 MemberExpression 是否应该包含在 SQL 中,或者作为常量处理,因为它来自恰好是业务对象的局部变量.

例如,如果你有这个:

Customer c = LoadCustomerFromDatabase();

var orders = from o in db.Orders() where o.CustomerID == c.CustomerID select o;

此刻,我的查询翻译器将尝试执行 SELECT * FROM orders o where o.CustomerID = c.CustomerID,这当然不起作用。

我想做的是检查 c.CustomerID 上的 MemberExpression 并尝试确定它是局部变量还是仅用作 Linq 表达式的一部分。

我已经设法将其作为第二次通过查询来完成,寻找 SQL Server 无法绑定(bind)的字段,然后注入(inject)它们的值,但如果可能的话,我希望这一切都发生在同一时间。我尝试查看表达式 Type 属性和 IsAutoClass,但这只是一个猜测,因为它包含单词 Auto。而且它没有用:)

最佳答案

好吧,我不知道你是否可以将它缩减为一次通过,但你可以获得有关成员的信息,如果它与你声明为查询一部分的另一个变量一致(在这种情况下“o"),您可以使用它来生成查询。

否则,您会假设它是一个常量,然后将该值代入。

不幸的是,因为你可以在查询的多个地方有 from 语句(除了 let 语句),你似乎不能一次完成,因为你需要知道所有的查询前面的变量。

关于c# - 确定 MemberExpressions 目标的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456383/

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