当前位置:  开发笔记 > 编程语言 > 正文

如何在linq查询中添加动态"where"子句?

如何解决《如何在linq查询中添加动态"where"子句?》经验,为你挑选了1个好方法。

我有一个带有位掩码的User表,其中包含用户的角色.下面的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 GetUsersFromRoles(uint[] UserRoles) {}

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



1> ilitirit..:

您可以使用PredicateBuilder类.

PredicateBuilder已经在LINQKit NuGet包中发布

LINQKit是LINQ to SQL和Entity Framework高级用户的一组免费扩展.


显然,PredicateBuilder类有两个版本:网站上的源代码示例,即Albahari&O'Reilly,保留所有权利; 并且作为LinqKit的一部分,它是"在许可的免费许可下,这意味着您可以随意修改它,并将其合并到您自己的商业或非商业软件中."
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有