Список класса Назначение нескольких значений в список строк - PullRequest
0 голосов
/ 31 октября 2018
class orders
{
    public string orderNumber { get; set; }
    public string id { get; set; }
    public List<string> idList { get; set; }
}

У меня есть список заказов, который может быть в любом месте от 1 до 100. Мне нужно назначить каждому члену списка все «идентификаторы» других членов списка, где «orderNumber» одинаков. Я хочу назначить это списку строк "idList". В списке заказов может быть несколько наборов заказов с одинаковым «порядковым номером».

Я пытался логически обдумать это, но не могу найти решение, которое работает.

Я попробовал следующее:

List<string> temp = new List<string>();
            for (int x = 0; x < orders.Count; x++)
            {

                if (string.Equals(orders[x].orderNumber, orders[x + 1].orderNumber))
                {
                    temp.Add(orders[x].id);
                    temp.Add(orders[x + 1].id);
                    i++;
                }
                else
                {
                    for(int o = 0; o < i; o++)
                    {
                        orders[o].idList= new List<string>();
                        orders[o].idList= temp;
                    }

                    i = 0;
                    temp.Clear();
                }
            }

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете сгруппировать по номеру заказа и присоединиться к id из тех же групп:

var result = orders.GroupBy(x => x.orderNumber).Select(g => new orders{
           orderNumber  = g.Key,
           idList = g.Select(x => x.Id).ToList()
          }

Однако, поскольку вам не нужен список orders, лучше выбрать анонимный тип:

.Select(g => new {
               orderNumber  = g.Key,
               idList = g.Select(x => x.Id).ToList()
              }

Или просто создайте новый тип класса, например:

класс FinalOrder { публичная строка orderNumber; публичный список idList; }

и затем:

.Select(g => new FinalOrder{
               orderNumber  = g.Key,
               idList = g.Select(x => x.Id).ToList()
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...