Linq - Как выбрать элементы из списка, который содержит только элементы из другого списка?

У меня есть два класса:

public class Item
{
   public int Id{get;set;}
   public List<Test> TestList{get;set;} 
}
public class Test
{ 
   public int Id{get;set;}
   public Item Item{get;set;}
   public byte State{get;set;}
}

Данные класса изделия:

Id
 1
 2
 3

И данные тестового класса:

Item   State
  1      1
  1      2
  1      3
  2      1
  2      4
  3      2

Теперь мне нужно написать запрос, который выберет Предметы из моего класса, которые имеют состояние 1 и 2. Например, для приведенного выше примера он должен вернуть строку с Item = 3. я написал этот запрос:

var stateList=new List<byte>(){1,2};
Items.Where(x => x.TestList.Select(c => c.State).Any(s => stateList.Contains(s)));

но он возвращает Item = 1 либо. Любая идея?

Ответы на вопрос(2)

Ваш ответ на вопрос