2015-10-02 2 views
0

У меня возникла проблема сравнения двух чисел в цикле модели C# MVC. Пример внутреннего цикла SequenceId (int) номера 1,2,4,6,7,9,12,16 и т. Д. Что мне нужно найти Rage = next Number - previous Number.C# как сравнить диапазон разностей двух чисел

Это мой метод C#.

if (model != null && ModelState.IsValid) 
{ 
    foreach (var list in model) 
    { 
     int sIdRage = 1; 
     int Interval =15; 
     int previousNumber =1; 
     //SequenceId will be 1,2,4,6,7,9,12,16 etc... 
     // First Loop sIdRage = 1 
     int sId = list.SequenceId; 
     int nextNumber = (sId - previousNumber); 
     //For the third loop nextNumber = 4 and previousNumbe = 2 
     // sIdRage = nextNumber - previousNumbe 
     // sIdRage = 2 
     sIdRage += (sId - previousNumber);   
     count += TimeSpan.FromMinutes(Interval * sIdRage); 
     list.FromTime = count.ToString(); 
     db.Entry(list).State = EntityState.Modified; 
     db.SaveChanges(); 
    } 
} 
+0

Объявить предыдущий номер вне цикла –

+0

Вы можете включать простой/минимальный пример кода, что вы пытаетесь? Из списка целых чисел «1,2,4,6,7,9,12,16' вы хотите рассчитать и получить еще один список« 1,2,2,1,2,3,4,16' ? –

+0

Число будет всегда возрастать, некоторое время 1,2,2,3,3,5,7,8,9,11,14 и т. Д. – Rob

ответ

1

Ваша логика неверна. Вы постоянно инициализируете свои переменные в цикле, поэтому он не будет работать. Также см. Мой комментарий в коде, близком к нижней. Это должно быть, как это

if (model != null && ModelState.IsValid) 
{ 
    int sIdRage = 1; 
    int Interval =15; 
    int previousNumber =1; 
    //SequenceId will be 1,2,4,6,7,9,12,16 etc... 
    // First Loop sIdRage = 1 

    foreach (var list in model) 
    { 
     int sId = list.SequenceId; 
     int nextNumber = (sId - previousNumber); 
     //For the third loop nextNumber = 4 and previousNumbe = 2 
     // sIdRage = nextNumber - previousNumbe 
     // sIdRage = 2 
     sIdRage += (sId - previousNumber);   
     count += TimeSpan.FromMinutes(Interval * sIdRage); 
     list.FromTime = count.ToString(); 
     previousNumber = sId; //this line of code has been added for keeping track of previous number , otherwise it will always use previousNumber = 1 
     //Note... you need to add a faile to which you are saving the list 
     //EG db.Customers.Entry(list) where Customers would be the table 
     //in which you would save 

     db.Entry(list).State = EntityState.Modified; 
     db.SaveChanges(); 
    } 
} 
+0

Вы кодируете предыдущий номер всегда 1. Например, 3,5 previousNumber - 3 – Rob

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