3

У меня есть следующие 3 класса.Сложный запрос LINQ или EF

Конфигурация рабочего процесса имеет один бренд и один тип рабочего процесса.

Мне нужен один метод в linq или EF, который дает мне все марки существующей конфигурации workflow и другой метод, который дает мне все бренды не существующей конфигурации рабочего процесса.

Я потерял причину Я не знаю с чего начать.

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. Audi

  2. Volkswagen

  3. Мерседес

WorkflowTYpes

  1. типа 1

  2. тип 2

  3. тип 3

WorkflowConfiguration

brandid, workflowtype ID

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

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

List<string> GetBrandsForExistingWorkflowType(string worfklowtype)

Если я прохожу ти pe1 этому методу он должен вернуть: Audi, потому что для type1, ауди существует на столе

List<string> GetBrandsForNonExistingWorkflowType(string workflowType)

Если я прохожу type1 этому методу следует вернуть. Volkswagen и Mercedes, потому что для type1 эти бренды 2 не находятся в отношениях.

+0

Что существующий workflowconfiguration и несуществующий workflowconfiguration виду.? – Muthukumar

+0

Опубликуйте свое усилие. Чтобы начать работу, см. Http://weblogs.asp.net/bradvincent/archive/2008/11/01/linq-cheat-sheet.aspx – Tassadaque

+0

Начните с определения того, как будет выглядеть ваш ожидаемый результат - тогда подумайте о том, какие данные вам нужно объединить в каких полях. Сначала попробуйте что-то простое, например, получить идентификатор конфигурации Workflow для идентификатора бренда. Таким образом, если вы столкнетесь с проблемами, вы сможете вернуться к нам и рассказать нам, что именно вы не знаете, как достичь. –

ответ

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

Удивительно это работает \ –