gpt4 book ai didi

c# - 关于 Func 谓词

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

//my question is here
public static Query Where<TElement>(this Query query, Func<TElement, bool> predicate)
{
query.sql +=" FROM Table WHERE "+ predicate+";";
return query;
}

//Query class
public class Query
{
public Query(){}
public Query(string sql){this.sql = sql;}
public string sql { set; get; }
}

//User class
public class User
{
public int ID { get; set; }
public string Name { get; set; }
}

//example:
User user = new User() { ID=1,Name="test"};
Query query = new Query();
query = query.Where<User>(u=>u.ID==user.ID);
Console.WriteLine(query.sql);

运行后结果为:

FROM Table WHERE System.Func'2[DAL.User,System.Boolean]';

但我需要的是:

FROM Table WHERE ID=1;

有人可以帮助我吗?

最佳答案

如果您想了解 Linq to Sql 如何构建 SQL 查询,您的第一步将是了解 Expression Trees .

下一步将是熟悉 ExpressionVisitor这将有助于您了解如何访问表达式树中的每一部分。

从那里通读博客系列 "LINQ: Building an IQueryable provider series"因为它经历了如何将表达式树解析为 sql。

帖子"Where and reusable Expression tree visitor"将帮助您解析谓词。

现在因为你不会使用 IQueryable<T>.Where()但只是Expression<Func<T, bool>>并非这些帖子中的所有内容都完全相关,但对于如何将谓词表达式解析为有效的 sql where 子句应该是一个良好的开端。

希望这可以帮助您入门!

关于c# - 关于 Func<TElement, bool> 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208351/

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