C# trouver tous les Éléments d'une Liste<Item>

Disons que nous avons un List<Product> et chaque élément de la liste a de nombreux List<Type>

public class Product{
public int Id {get:set;}
public string Name {get:set;}
public List<Type> Types {get;set;}
}

public class Type{
public int Id {get;set;}
public string Name{get;set;}
}

Après j'ai créer une liste de produits, j'ai besoin de les regrouper par type et ensuite trouver tous les appartient à chaque type. Je pense que je devrais essayer LINQ pour cela. Voici ce que j'ai fait jusqu'à présent, mais ne semble pas la bonne façon de faire le travail. Peut-être quelqu'un peut m'aider.

var productsList = new List<Product>();
//Adding products and types for each of them

var productTypesList = new Dictionary<int, string>();

 foreach (var p in productsList)
                            {
                                var pTypes = p.Types;
                                foreach (var ptype in
                                    pTypes.Where(x=> !productTypesList .ContainsKey(x.Id)))
                                {
                                    productTypesList.Add(ptype.Id, ptype.Name);
                                }
                            }

Alors j'essaie de recherche Comme cette

foreach (var t in productTypesList)
{
var matches = productsList.FindAll(........); 
//from here I need to find all the product which belongs to type (t.id)

if (matches.Count > 0)
{
//Do somthing here
}
}

OriginalL'auteur randika | 2011-07-03