Ich habe etwas arbeiten in einfachen Simpel-Schleifen, aber ich möchte, wie es mit LINQ, wenn möglich zu tun.Wie man eine gruppierte distinct in linq
Ich weiß nicht einmal, wie ich beschreiben soll, was ich tun möchte. Aber Stack-Überlauf will, dass ich so in Worte tun, anstatt mit einem Beispiel, so ist dies mich austricksen ...
Die Klassen (abgespeckte)
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public List<CategoryGroup> CategoryGroups { get; set; }
}
public class CategoryGroup
{
public int CategoryGroupId { get; set; }
public string Name { get; set; }
public List<Category> Categories { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string Name { get; set; }
}
Was ich tun möchte,
Von
Product 1
CategoryGroup 1
Category 11
Category 12
Category 13
CategoryGroup 2
Category 21
Category 22
Product 2
Category Group 1
Category 11
Category 14
Category Group 2
Category 21
Category Group 3
Category 31
Um
Category Group 1
Category 11
Category 12
Category 13
Category 14
Category Group 2
Category 21
Category 22
Category Group 3
Category 31
Der Arbeitscode
var categoryGroups = new List<CategoryGroup>();
foreach (var product in products)
{
foreach (var categoryGroup in product.CategoryGroups)
{
var group = categoryGroups.SingleOrDefault(cg => cg.CategoryGroupId == categoryGroup.CategoryGroupId);
if (group == null)
{
group = new CategoryGroup {
Categories = new List<Category>(),
CategoryGroupId = categoryGroup.CategoryGroupId,
Name = categoryGroup.Name
};
categoryGroups.Add(group);
}
foreach (var category in categoryGroup.Categories)
{
if (group.Categories.Any(c => c.CategoryId == category.CategoryId))
{
continue;
}
group.Categories.Add(category);
}
}
}
Bitte fügen Sie den Code zum Ausfüllen der Beispieldaten bei - damit es Ihnen leichter fällt, Ihnen zu helfen. – mjwills