我有以下型号:
工作流配置具有品牌并且还具有类型。 工作流配置具有一组审批者。 Approvers实体具有属性Status和username。
在应用程序的另一部分中,我们有一个名为RequestBase的实体 该实体具有名为CurrentStatus的字符串属性。
我需要使用linq或EF Lambda表达式进行查询,该表达式返回所有状态与批准者实体上的用户名匹配的请求。 我知道它有点复杂,或者真的很复杂,哈哈。
这些是我的实体(简化)
public class RequestBase
{
public int RequestBaseId { get; set; }
public string CurrentStatus { get; set; }
}
public class WorkflowConfiguration
{
public int WorkflowConfigurationId { get; set; }
public WorkflowType WorkflowType { get; set; }
public Brand Brand { get; set; }
public virtual ICollection<Approver> Approvers { get; set; }
}
public class Approver
{
public Approver()
{
}
public Approver(string approverUserName)
{
Name = approverUserName;
}
public int Id { get; set; }
public string Name { get; set; }
public string StepName { get; set; } -----||||>>>>>> Must match status?
public int Order { get; set; }
}
和我的查询? 显然它甚至没有编译
return _context.RequestBases.
.Where(a => a.CurrentStatus.Any(workflowconfiguration.Select(b=>b.Approvers.Select(c => c.StepName))));
答案 0 :(得分:1)
_context.RequestBases
.Where(rb => _context.Workflowconfiguration
.Any(wc => wc.Approvers
.Any(a => a.StepName == rb.CurrentStatus)));