3

我有以下3個類。複雜的LINQ或EF查詢

工作流配置有一個品牌和一個工作流類型。

我需要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)

如果我通過TY PE1此方法應該返回: 奧迪因爲對於TYPE1,奧迪在桌子上存在

List<string> GetBrandsForNonExistingWorkflowType(string workflowType)

如果我通過TYPE1這個方法應該返回。 大衆和奔馳因爲type1,這兩個品牌不在關係。

+0

什麼是現有workflowconfiguration和非現有workflowconfiguration意思? – Muthukumar

+0

發佈你的努力。要開始看到http://weblogs.asp.net/bradvincent/archive/2008/11/01/linq-cheat-sheet。aspx – Tassadaque

+0

首先定義您的預期結果是什麼樣子 - 然後考慮需要加入哪些數據的字段。首先嚐試一些簡單的操作,例如獲取品牌ID的工作流配置標識。這樣,如果遇到問題,您可以回到我們這裏,告訴我們究竟是什麼,你不知道如何實現。 –

回答

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

驚人的作品\ –