繁体   English   中英

复杂的LINQ或EF查询

[英]Complex LINQ or EF query

我有以下3个班级。

工作流配置具有一个品牌和一个工作流类型。

我需要linq或EF中的一种方法,它可以获得现有工作流配置的所有品牌,以及另一种让我获得所有品牌的非现有工作流配置的方法。

我迷失了因为我不知道从哪里开始。

public class Brand
    {
        public int BrandId { get; set; }
        public string Name { get; set; }
    }


  public class WorkflowType
    {
        public int WorkflowTypeId { get; set; }
        public string Name { 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; }

    }

Update1以下是我的表格的样子和预期结果

  1. 奥迪

  2. 大众汽车

  3. 奔驰

WorkflowTYpes

  1. 1型

  2. 2型

  3. 3型

WorkflowConfiguration

brandid,workflowtype id

1 ------------ 1

1 ------------- 2

List<string> GetBrandsForExistingWorkflowType(string worfklowtype)

如果我将type1传递给此方法,它应返回:Audi因为对于type1,audi存在于表中

List<string> GetBrandsForNonExistingWorkflowType(string workflowType)

如果我将type1传递给此方法,它应该返回。 大众和梅赛德斯因为对于1型,那2个品牌都没有关系。

我想这就是你想要的:

List<string> GetBrandsForExistingWorkflowType(string worfklowtype)
{
    var result = db.WorkflowConfigurations
                 .Where(x => x.WorkflowType.Name == worfklowtype)
                 .Select(x => x.Brand);
    return result;
}

List<string> GetBrandsForNonExistingWorkflowType(string workflowType)
{
    var excluded = GetBrandsForExistingWorkflowType(string worfklowtype);
    var result = db.Brands.Except(excluded);
    return result;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM