Skip to content

Instantly share code, notes, and snippets.

@beginor
Last active December 3, 2020 09:38
Show Gist options
  • Save beginor/4bc9bfd25dfd9f488156cf4975b707f6 to your computer and use it in GitHub Desktop.
Save beginor/4bc9bfd25dfd9f488156cf4975b707f6 to your computer and use it in GitHub Desktop.
dynamic query demo
public void SearchUser(
    string userName,
    int? age
) {
    // 以 NHibernate 的动态查询示例
    ISession session = OpenSession();
    IQueryable<User> query = session.Query<User>();
    // 根据参数动态构建表达式树
    if (userName.IsNotNullOrEmpty()) {
        query = query.Where(user => user.UserName.Contains(userName) )
    }
    if (age.HasValue) {
        query = query.Where(user => user.Age >= age);
    }
    // 可以先根据构造好的表达式树进行 Count 查询
    long userCount = query.LongCount();
    // 也可以继续添加其它表达式,并查询结果
    IList<User> users = query.OrderBy(user => user.Id)
                             .Select(user => new User { Id = user.Id, UserName = user.UserName })
                             .ToList();
}
@catchex
Copy link

catchex commented Dec 3, 2020

我已经参考了流行的所有ORM 框架了,也读了他们的代码,就靠这两点,使开发效率提升了很多,后期将项目稳定后,一定能超越这些框架

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment