【问题标题】:Complex LINQ or EF query复杂的 LINQ 或 EF 查询
【发布时间】:2012-05-29 07:19:09
【问题描述】:

我有以下 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. 奥迪

  2. 大众汽车

  3. 奔驰

工作流类型

  1. 类型 1

  2. 类型 2

  3. 类型 3

工作流程配置

品牌 ID、工作流类型 ID

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

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

List&lt;string&gt; GetBrandsForExistingWorkflowType(string worfklowtype)

如果我将 type1 传递给这个方法,它应该返回: 奥迪,因为对于type1,奥迪存在于桌子上

List&lt;string&gt; GetBrandsForNonExistingWorkflowType(string workflowType)

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

【问题讨论】:

  • 现有的工作流配置和不存在的工作流配置是什么意思?
  • 首先定义您的预期结果,然后考虑您需要在哪些字段上加入哪些数据。首先尝试一些简单的事情,例如获取品牌 ID 的工作流配置 ID。这样,如果您遇到问题,您可以回到我们这里,告诉我们您不知道如何实现的具体内容。
  • 我已经更新了我的问题以显示我需要什么以及我的方法签名

标签: linq entity-framework linq-to-sql entity-framework-4 linq-to-entities


【解决方案1】:

我想这就是你想要的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多