c# - 如何将动态 'where' 子句添加到 linq 查询?

标签 c# linq dynamic

我有一个带有位掩码的用户表,其中包含用户的角色。下面的 linq 查询返回角色包括 1、4 或 16 的所有用户。

var users = from u in dc.Users
            where ((u.UserRolesBitmask & 1) == 1)
               || ((u.UserRolesBitmask & 4) == 4)
               || ((u.UserRolesBitmask & 16) == 16)
            select u;

我想将其重写为下面的方法,以返回给定角色的所有用户,以便我可以重用它:

private List<User> GetUsersFromRoles(uint[] UserRoles) {}

关于如何动态构建查询的任何指示?谢谢

最佳答案

您可以使用 PredicateBuilder类。

PredicateBuilder 已于 LINQKit NuGet package 发布

LINQKit is a free set of extensions for LINQ to SQL and Entity Framework power users.

关于c# - 如何将动态 'where' 子句添加到 linq 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/180405/

相关文章:

c# - nopCommerce 程序集找不到 dll 引用

c# - 将窗体控件绑定(bind)到对象的属性

c# - 如何在 LINQ 中分组然后选择元素到新类中(最好是 C#)

c# - 以集合为键分组

json - 如何通过 json(Dictionary) 生成模型类或将属性添加到没有属性的现有模型类

programming-languages - 静态/动态类型与静态/动态绑定(bind)

c# - 滚动到列表框 wp7 的底部

c# - 从 Windows 窗体异步执行存储过程然后断开连接?

c# - C#中使用OfType过滤一个类型的对象

javascript - 如何调用从ajax新添加的函数