Waqar (Vicky) Ответов: 2

Как я могу сделать этот код функции более кратким, а не использовать несколько циклов foreach ?


private void RenumberPreferredSequence(Item record)
        {
            foreach (var itemVendor in record.ItemVendors)
            {
                itemVendor.PreferredSequence = 0;
            }

            foreach (var itemVendor in record.ItemVendors)
            {
                if (itemVendor.PrimaryVendor)
                {
                    itemVendor.PreferredSequence = 1;
                }
            }

            var seq = 2;

            foreach (var itemVendor in record.ItemVendors)
            {
                if (!itemVendor.PrimaryVendor)
                {
                    itemVendor.PreferredSequence = seq;
                    seq = seq + 1;
                }
            }
        }


Что я уже пробовал:

Попробовал использовать 1 или 2 цикла foreach, но не смог достичь того, что я ожидаю.
Например, сначала я должен был бы сделать все ItemVendor.PreferredSequence = 0;
Во вторых я должен был бы сделать только один
ItemVendor.PreferredSequence = 1 which is a PrimaryVendor
Third i should have to set the sequence on other items in collection

2 Ответов

Рейтинг:
5

George Swan

Вы можете выполнить большую часть работы в одной строке кода.


private void RenumberPreferredSequence(Item record)
  {
    int seq = 2;
    foreach(var itemVendor in record.ItemVendors)
     {
       itemVendor.PreferredSequence = itemVendor.PrimaryVendor ? 1 : seq++;
     }
  }


Waqar (Vicky)

Спасибо за вашу помощь @George Swan.
(Год)

Рейтинг:
2

Clifford Nelson

Не уверен, что это то, чего вы хотите, но думаю, что да:

private void RenumberPreferredSequence(Item record)
        {
            var seq = 2;
            foreach (var itemVendor in record.ItemVendors)
            {
                itemVendor.PreferredSequence = 0;
                if (itemVendor.PrimaryVendor)
                {
                    itemVendor.PreferredSequence = seq++;
                }
            }
          }


Richard MacCutchan

1++?

Waqar (Vicky)

Спасибо за помощь @Клиффорд Нельсон.