folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Koşullu For & Foreach Döngüsü



Koşullu For & Foreach Döngüsü

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    Merhaba arkadaşlar.

    Borç Tahsilatı ile ilgili bir sorunum var.

    Müşteri Borcunu önce taksitlendiriyor.

    01.01.2022 100TL
    01.02.2022 100TL
    01.03.2022 100TL
    01.04.2022 100TL
    01.05.2022 100TL
    01.06.2022 100TL

    gibi.

    Fakat 450 tl şeklinde toplu tahsilat yapıyor.

    Şuan ki sistemde kullanıcı bu tahsilat işlemini 5 ayrı işlemde yapabiliyor.
    4. aya kadar borçları tahsil ediyor. sonra 5. ayın borcunu da 50 tl şeklinde parçalı tahsil ediyor.

    istediğim ve kafamda kuramadığım döngü şu;

    Kullanıcı 450 tl tahsilat yaparken tahsil edilen tutarı girdiğinde tek işlemde
    sistem 4 taksiti tam tahsil edip 5. ayın borcundan arta kalan 50tl yi düşmesi.

    Beynim bu saat itibariyle yanmış durumda. 

    Bir el atın şakirtler.. :)

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    borclar = [(date, amount, remaining)]

     

    odeme = 450

    kalan = odeme

    yeni_liste = []

    for borc in borclar:

        if kalan >= borc[2]:

            borc[2] = 0

            kalan -= borc[2]

         elif kalan > 0 :

              borc[2] -= kalan

               kalan = 0

         yeni_liste.append(borc)

     

           


    black implies white, self implies other, life implies death.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek
    debits={
    '20220101':100,
    '20220201':100,
    '20220301':100,
    '20220401':100,
    '20220501':100,
    '20220601':100,
    '20220701':100
    };
    payment=425;
    
    for(var key in debits) {
        var amount = debits[key];
        if(payment >= amount) {
            delete debits[key];
            payment-=amount;
        } else {
            debits[key]=amount-payment;
            break;
        }
    }

     


    |sadece aptalların başarısı ders notu ile ölçülür|
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek

    100

    100

    100

    100

    50

    Yerine

    100

    100

    100

    150

    Mi yapsın diyorsun?


    0x0480 takilin madem ﷽﷽﷽
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    wert bunu yazdı
    debits={
    '20220101':100,
    '20220201':100,
    '20220301':100,
    '20220401':100,
    '20220501':100,
    '20220601':100,
    '20220701':100
    };
    payment=425;
    
    for(var key in debits) {
        var amount = debits[key];
        if(payment >= amount) {
            delete debits[key];
            payment-=amount;
        } else {
            debits[key]=amount-payment;
            break;
        }
    }

     

    sanırım böyle bir şey istiyorum. Bunu bir deneyeceğim. Anladığım kadarıyla borçları list olarak çekip

    sonra koşul durumuna göre ortadan kaldırmam ya da tutar borçdan daha az ise eksiltmem gerekiyor.

    deneyip sonucu yazacağım.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    olayı aşağıdaki gibi çözdüm. Cevap yazan herkese teşekkürler.

    Döngüyü kurmamda fikir vermiş oldunuz.

     foreach (var item in sx.ToList())
                                {
                                    decimal amount = item.BorcTutar.Value;
                                    if (TahsilatTutar >= amount)
                                    {
                                        sx.Where(x=>x.DebtID==item.DebtID).ToList().ForEach(x => { x.Paid = true; });
                                        db.SubmitChanges();                                                                       
                                        TahsilatTutar -= amount;
                                    }
                                    else
                                    {
                                        sx.Where(x => x.DebtID == item.DebtID).ToList().ForEach(x => x.BorcTutar -= TahsilatTutar);
                                        db.SubmitChanges();
                                        break;
                                    }
    
                                }

     

Toplam Hit: 1339 Toplam Mesaj: 6
for döngüsü foreach