2014-10-27 3 views
2

В дополнение к моему previous question, у меня до сих пор нет конкретного решения моей проблемы.Объединение дубликатов в один результат

У меня есть 2 классов, как это:

public class Product 
{ 
    public Product() 
    { 
     Options = new List<Option>(); 
    } 
    public string Name { get; set; } 
    public int ID { get; set; } 
    public List<Option> Options { get; set; } 
} 

public class Option 
{ 
    public int SubID { get; set; } 
    public string SubName { get; set; } 
    public int ListBoxID { get; set; } 
    public decimal Price { get; set; } 
    public bool IsSelected { get; set; } 
} 

которые используются в списке, как это:

List<Product> Products { get; set; } 

enter image description here

Когда пользователь выбирает продукт слева (который всегда с одинаковыми свойствами), внутренний List<Optie> загружается в 4 разных ListBox's, Фильтр: ListBoxID.

Теперь, если пользователь выбирает одни и те же параметры в двух продуктах, как можно преобразовать их в один результат с помощью linq?

например. 4 идентичные продукты загружаются, пользователь выбирает те же параметры для 2-х продуктов, то мой результат будет:

2x Product 2x lookbrood 2x ollema 2x fitness broodje 2x testtest

Если 2 другие продукты имеют различные выборы, они могут быть результатом для них:

2x Product 2x ciabatta broodje 2x ollema 2x slagroom 2x smos

Мне всегда нужно количество загружается в Products: например: 6 продукты загружаются, то мои комбинации могут быть:

3x Product 3x ciabatta broodje 3x ollema 3x slagroom 3x smos

3x Product 3x Some other option 1 3x Some other option 2 3x Some other option 3 3x Some other option 4

или

2x Product 2x Some option 1 2x Some option 2 2x Some option 3 2x Some option 4

2x Product 2x Some other option 1 2x Some other option 2 2x Some other option 3 2x Some other option 4

2x Product 2x Some other option 1 2x Some other option 2 2x Some other option 3 2x Some other option 4

Это лучшее объяснение, которое я могу дать, я надеюсь, что изображение помогает.

+0

Это может быть яснее, если вы могли бы дать пример 2 'Product' с их' Optie' (варианты?) И что результат должен выглядеть, если выбраны те 2 'Product' , Каким должен быть тип конечного результата? Должен ли он быть одним «Продуктом»? A 'Список '? Как следует сочетать «Опти»? –

+1

Argh ... почему вы смешиваете такие языки? У вас есть свойство IsSelected (приятное, английское имя) ... и затем куча неанглийских свойств (включая имя класса). Если вы когда-нибудь получите кодер из другой страны, ваш код будет ад для работы с ним. Кроме этого, я не могу понять, что вы пытаетесь сделать. : | – Shaamaan

+0

@MattBurland Обновлен мой вопрос, это сложная вещь, я знаю .. – DeMama

ответ

2

Вы ищете GroupBy?. Это будет группировать Optie с одним и тем же идентификатором и указывать их количество.

Product.Opties 
    .GroupBy(x => new { 
     x.ListBoxID, x.Naam 
    }) 
    .Select(x => 
    new { 
     ListBoxID = x.Key.ListBoxID, 
     Naam = x.Key.Naam, 
     Count = x.Count() 
    }) 

More info on GroupBy

Смежные вопросы