如何在 .NET 中构建一个好用的动态查询生成器自从.NET Framework 3.5提供了LINQ之后,集合数据查询基本被LINQ统一了。这大幅提高了编写数据查询代码的效率和质量,但是在需要编写动态查询的时候反而很困难,特别是最常用的where和order by子句,他们的参数是Expression。编写静态查询的时候编译器会自动把代码转换成等价的表达式,而动态查询无法借助编译器完成表达式构建,只能手动拼接。想要正确拼接一个描述低级代码结构的表达式对开发者的功力提出了较高的要求,哪怕是这方面的高手也容易翻车。