Powiedzmy mamy List<Product>
i każda pozycja produktu na liście ma wiele List<Type>
C# znaleźć wszystkie pasujące przedmioty z listy <Item>
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;}
}
Po utworzyć listę produktów, muszę grupy je przez typ a następnie znaleźć wszystkie należy do każdego typu. Myślę, że powinienem wypróbować pod tym kątem LINQ
. Oto, co zrobiłem do tej pory, ale wydaje się, że nie jest to właściwy sposób na wykonanie tej pracy. Być może ktoś mi pomoże.
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);
}
}
Wtedy staram się szukać jak to
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
}
}
Wildenburg - Twoja odpowiedź również jest prawidłowa. Ale najpierw zobaczyłem odpowiedź zasugerowaną przez @Franchesca i zaimplementowałem ją w moim kodzie. Dzięki za pomoc. Zaznaczę to również jako odpowiedź. (mam nadzieję, że to możliwe) – randika
@randika Cieszę się, że mogliśmy pomóc :) Możesz zaznaczyć tylko jedną odpowiedź, ale myślę, że Ronald prawdopodobnie zasługuje na to, aby dodać rzeczy związane z IEqualityComparer. – Franchesca