Как проверить отсутствующий элемент в последовательности - PullRequest
0 голосов
/ 02 сентября 2011

Я делаю проект, связанный с платежной ведомостью, где у меня будет payperiodnumbers для каждой заработной платы, которая была запущена.Я покажу все платежные ведомости в виде сетки с соответствующими номерами периода оплаты.

Предположим, я получаю следующие результаты, когда я привязан к сетке

enter image description here

Сейчасиз сетки, если я выберу 1 и нажму на удаление, я хотел бы показать сообщение об ошибке, в котором говорится, что сначала нужно удалить максимальный период оплаты.

Так же, как если бы у меня был номер максимального периода оплаты как 7 иесли пользователь выбирает 1,2,3,4,5,6 и пытается удалить, я хотел бы показать ту же ошибку.Я сохраняю выбранный ID's в массиве, поэтому любой может помочь мне, как я могу проверить свое состояние, как указано.Я могу получить максимальный payperiodid, используя запрос, но оставшийся код, который я хотел бы сделать.

Я использую 2.0, поэтому нет смысла использовать LINQ здесь.Может ли кто-нибудь помочь мне

Как указывалось Azodious, я показываю некоторые условия, которые должны работать, а некоторые нет

Если максимальное число 7 и если я выберу 1,5,7, я бы хотелчтобы отобразить сообщение об ошибке.

Если я выберу 5,6,7, он должен удалить это.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

Простая логика для отображения пропущенных чисел

ArrayList a = new ArrayList();
List<int> lst = new List<int>();
lst.Add(1);
lst.Add(3);
lst.Add(5);
int fst = (int)lst[0];
int last = 0;
for (int i = 0; i < lst.Count; i++)
{
   last = (int)lst[i];
 }
for (int k = fst; k <= last; k++)
{
 if (k == fst | k == last)
   {
   }
 else
 {
    a.Add(k);
    a.Add(" ");
 }
}
   Label1.Text = "Missing Numbers are" + " " + System.String.Concat(a.ToArray());
0 голосов
/ 02 сентября 2011

Примерно так:

selectedNumbers.Sort();
selectedNumbers.Reverse();

int maxPeriodNumber = 5; // This you know
int lastValue = (int)selectedNumbers[0];

if (lastValue < maxPeriodNumber)
{
    // Highest selected number is smaller than required, warn user or throw exception
    return;
}

foreach (int val in selectedNumbers)
{
    if (val < (lastValue - 1))
    {
        // There is a gap in the numbering, warn user or throw exception
        return;
    }

    lastValue = val;
}

// When you end up here, everything is ok and you can delete the items whose numbers are in the list
...