Как реализовать предложение IN в LinQ - PullRequest
0 голосов
/ 21 июня 2010

У меня есть два ILIst из этих объектов:

    class ProductionMachineType
    {
        string code { get; set; }
        IEnumerable<string> ProductionToolsLink { get; set; }
    }

    class ProductionTools
    {
        string code { get; set; }
    }

Я ищу быстрый метод Linq, который позволил бы мне запросить IList<ProductionMachineType>, который содержит хотя бы один ProductionToolsLink, содержащийся внутри ILIst<ProductionTools>.

В SQL я бы увидел что-то вроде этого:

SELECT 
      * 
FROM 
      IList<ProductionMachineType>
WHERE 
      IList<ProductionMachineType>.ProductionToolsLink IN ILIst<ProductionTools>

Есть ли способ сделать это?

Ответы [ 2 ]

5 голосов
/ 21 июня 2010

Содержит метод может помочь вам:

var names = new string[] { "Alex", "Colin", "Danny", "Diego" };

var matches = from person in people
        where names.Contains(person.Firstname)
        select person;
2 голосов
/ 21 июня 2010

Это будет сделано, но я не могу гарантировать, насколько это эффективно ...

var output = machines.Where(machine => 
     machine.ProductionToolsLink
     .Any(link => tools.Select(tool => tool.code).Contains(link)));
...