Как объединить вывод цикла foreach в один? - PullRequest
0 голосов
/ 09 апреля 2019

Код подобен основному элементу, а IdSub - подобию основного элемента. 1 основной элемент может иметь несколько подпунктов.

У меня есть этот код foreach в моем коде.

 foreach (var subID in Ids)
     {
          Display display = new Display();

           display.Code = item.Code;
           display.Name = item.Name;
           display.Price = item.Price;
           display.IdSub = subID ;
           DisplayList.Add(display);
    }

Поскольку Идентификаторы имеют 3 subID , поэтому на выходе есть 3 строки данных. Я хочу, чтобы Код , Имя , Цена было таким же, как и основной предмет. Я хочу, чтобы это слилось в 1 строку с несколькими IdSub . Как я могу объединить / объединить эти данные?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

У вас есть несколько вариантов сделать это. Вот один из самых простых:

foreach (var id in itemIds)
{
    if (DisplayList.Any(x=> x.Code == item.Code && x.Name == item.Name && x.Price == item.Price))
    {
        var display = DisplayList.Single(x=> x.Code == item.Code && x.Name == item.Name && x.Price == item.Price);
        display.IdSubs.Add(id);//change IdSub to IdSub, as a list of its previous type
    }
    else
    {
        Display display = new Display();
        display.Code = item.Code;
        display.Name = item.Name;
        display.Price = item.Price;
        display.IdSubs = new List<int>();//Assumed that IdSub was int
        DisplayList.Add(display);
    }
}
0 голосов
/ 09 апреля 2019

Затем вам нужно изменить IdSub поле / свойство в вашем классе Display на массив целых чисел: int[] (вы можете сделать это по-другому, но лучше всего подойдет IMO).

Тогда выможете пропустить цикл:

Display display = new Display()
{
  Code = item.Code,
  Name = item.Name,
  Price = item.Price,
  IdSub = Ids //if Ids is array of ints, else you need to use ToArray() method
}

DisplayList.Add(display);

Чтобы отобразить данные IdSub с привязкой, вам нужно определить дополнительное свойство для вашего Display класса:

public string IdSubDisplay
{
  get
  {
    return string.Join(",", IdSub);
  }
  set { }
}

и связать с IdSubDisplay.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...