复杂的LINQ或EF查询

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; }

    }

更新1

以下是我的表格及预期结果

品牌

  1. Audi

  2. Volkswagen

  3. Mercedes

工作流类型

  1. 类型1

  2. 类型2

  3. 类型3

工作流配置

品牌ID,工作流类型ID

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

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

List<string> GetBrandsForExistingWorkflowType(string workflowType)

如果我向该方法传递“type1”,它应返回: 因为对于type1,Audi存在于表中

List<string> GetBrandsForNonExistingWorkflowType(string workflowType)

如果我向该方法传递“type1”,它应返回: 因为对于type1,这两个品牌不在关系中,所以Volkswagen和Mercedes。


现有的工作流配置和不存在的工作流配置分别是什么意思? - Muthukumar
发布你的努力。要开始,请参见http://weblogs.asp.net/bradvincent/archive/2008/11/01/linq-cheat-sheet.aspx - Tassadaque
首先定义您期望的结果 - 然后考虑需要连接哪些字段的数据。首先尝试一些简单的操作,比如获取品牌ID的工作流配置ID。这样,如果遇到问题,您就可以回来告诉我们您不知道如何实现的具体内容。 - Joanna Derks
我已经更新了我的问题,展示了我需要什么以及我的方法签名。 - Luis Valencia
1个回答

4
我想这就是你想要的内容:

我认为这是你想要的:

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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接