有没有更短的方法来编写这个LINQ构造?

时间:2012-08-06 14:43:50

标签: c# linq asp.net-mvc-4

我需要确定用户是否为销售员。我的ASP.NET MVC 4控制器中有以下内容:

    public ActionResult Index() {
        string salespersonCode = null;

        var roles = Roles.GetRolesForUser();
        if(roles.Count() == 1 && roles.Contains(UserRoles.Salesperson.ToString()))
            salespersonCode = User.Name();

        return View(new ProspectIndexViewModel { Prospects = _crmService.GetActiveProspects(salespersonCode) });
    }

用户可能有多个角色。如果用户只有该角色,我想将返回的数据限制为仅属于销售人员的数据。其他三个角色(Manager,Admin和SalesAdministrator)将接收整个列表。谢谢!

3 个答案:

答案 0 :(得分:5)

您可以使用All方法。

if(roles.All(r => r == UserRoles.Salesperson.ToString()))

但我发现你的代码没问题......

答案 1 :(得分:0)

var roles = Roles.GetRolesForUser();
if(!roles.Any(r => r != UserRoles.Salesperson.ToString()))
    salespersonCode = User.Name();

答案 2 :(得分:-1)

尝试使用

if (Page.User.IsInRole("Salesperson")) { ... };