如何使用 ||在 lambda 表达式中
How to use || inside a lambda expression
我过滤掉了用户可以在 webapi Get 调用中看到的文档。 Document 对象中的 CompanyName 必须与分配给用户的 CompanyName 相匹配。因此,如果为用户分配了 CompanyName1 和 CompanyName2,他们只能 return 匹配它们的文档。
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();
}
}
这显然不起作用,但这是我需要它做的。
Error 1 Operator '||' cannot be applied to operands of type 'System.Linq.IQueryable' and 'lambda expression'
Error 2 Operator '.' cannot be applied to operand of type 'lambda expression'
只使用y =>
一次
return context.Documents
.Where(j => j.CompanyName == user.CompanyName1 ||
j.CompanyName == user.CompanyName2 ||
j.CompanyName == user.CompanyName2)
.ToList();
我过滤掉了用户可以在 webapi Get 调用中看到的文档。 Document 对象中的 CompanyName 必须与分配给用户的 CompanyName 相匹配。因此,如果为用户分配了 CompanyName1 和 CompanyName2,他们只能 return 匹配它们的文档。
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();
}
}
这显然不起作用,但这是我需要它做的。
Error 1 Operator '||' cannot be applied to operands of type 'System.Linq.IQueryable' and 'lambda expression'
Error 2 Operator '.' cannot be applied to operand of type 'lambda expression'
只使用y =>
一次
return context.Documents
.Where(j => j.CompanyName == user.CompanyName1 ||
j.CompanyName == user.CompanyName2 ||
j.CompanyName == user.CompanyName2)
.ToList();