如何使用||在lambda表达式中

时间:2015-02-16 03:10:13

标签: c# asp.net-web-api lambda

我过滤掉了用户在webapi Get call中可以看到的文档。 Document对象中的CompanyName必须与分配了CompanyName的用户匹配。因此,如果分配了CompanyName1和CompanyName2的用户只能返回与其匹配的文档。

public List<Document> GetDocuments()
    {
        var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
        var user = manager.FindById(User.Identity.GetUserId());
        using (var context = new ApplicationDbContext())
        {

            return context.Documents
                .Where(j => j.CompanyName == user.CompanyName1) || (j => j.CompanyName == user.CompanyName2) || (j => j.CompanyName == user.CompanyName2)
                .ToList();
        }
    }

这显然不起作用,但这是我需要它做的。

  

错误1运营商&#39; ||&#39;不能应用于'System.Linq.IQueryable&#39;类型的操作数。和&#39; lambda表达&#39;

     

错误2运营商&#39;。&#39;不能应用于&#39; lambda表达式&#39;

类型的操作数

1 个答案:

答案 0 :(得分:7)

仅使用y =>一次

       return context.Documents
            .Where(j => j.CompanyName == user.CompanyName1 ||
                        j.CompanyName == user.CompanyName2 ||  
                        j.CompanyName == user.CompanyName2)
            .ToList();