Linq - Comment sélectionner des éléments d'une liste qui ne contient que des éléments d'une autre liste?

J'ai deux classes:

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

De Classe De L'Élément De Données:

Id
 1
 2
 3

Et De La Classe De Test Des Données:

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

Maintenant, j'ai besoin d'écrire une requête qui sélectionne les Objets de ma classe qui ont juste l'état 1 et 2.Par exemple, pour l'exemple ci-dessus, il devrait retours de ligne avec Item=3.
j'ai écrit cette requête:

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

mais il renvoie Item=1 soit.Une Idée?

source d'informationauteur Mahboobeh Mohammadi