Linq DbContext - 如果其他列表包含值,则过滤

问题描述 投票:0回答:1

只有当另一个列表中存在值时,我才需要Linq查询才能在结果中包含项。我一直在这里和MSDN文档中看到,只是无法正确的语法。

我有一个用户角色列表:

var userRoles = _identityManager.GetUserRoles(userId);
var roles = userRoles.Select(role => role.RoleId).ToList();

并且我希望针对DbContext的查询仅在其AccessRole位于角色列表中时才包含项:

documents = context.ClientDocuments
.Where(d => d.ClientID == clientId)
//&& roles.contains d.AccessRole // pseudo code
.OrderByDescending(d => d.DateCreated)
.Select(
    doc => new ClientDocumentDto()
    {
        DocumentID = doc.ClientDocumentID,
        Name = doc.Name,
        Project = doc.Project,
        DocumentType = doc.DocumentType,
        DateCreated = doc.DateCreated,
        AccessRole = doc.AccessRole
    });
linq entity-framework dbcontext
1个回答
1
投票

如何在Where子句中指定条件?

documents = context.ClientDocuments
.Where(d => d.ClientID == clientId && roles.Contains(d.AccessRole))

.OrderByDescending(d => d.DateCreated)
.Select(
    doc => new ClientDocumentDto()
    {
        DocumentID = doc.ClientDocumentID,
        Name = doc.Name,
        Project = doc.Project,
        DocumentType = doc.DocumentType,
        DateCreated = doc.DateCreated,
        AccessRole = doc.AccessRole
    });
© www.soinside.com 2019 - 2024. All rights reserved.