• 13-04-2020, 23:23:09
    #1
    Merhabalar, excelde bir örnek tablo hazırladım. Girintili seviyeye göre bir üst düzeyin birim adetiyle bulunduğu seviyedeki birim adetini çarpmam gerekiyor.
    https://drive.google.com/file/d/1tPy...aIsVT6ToI/view
    exceli drive a yükledim. sadece örnek olarak ekledim
    Datagridview tablom var orada bunu uygulamam gerekiyor. Şu sıralar biraz sardım bu işlere de yapamadım henüz.
    Bunu csharp ta yapmama yardımcı olur musunuz?
    2.1.2.4 ün üst seviyeleri 2.1.2 onunda üstü 2.1 onun üstü de 2
    Yani 2.1.2.4 ün adetini bulmak icin = 2.1.2.4 x 2.1.2 x 2.1 x 2 nin adetlerini çarpmak gerekiyor
  • 14-04-2020, 04:26:19
    #2
    ufukt51 adlı üyeden alıntı: mesajı görüntüle
    Merhabalar, excelde bir örnek tablo hazırladım. Girintili seviyeye göre bir üst düzeyin birim adetiyle bulunduğu seviyedeki birim adetini çarpmam gerekiyor.
    https://drive.google.com/file/d/1tPy...aIsVT6ToI/view
    exceli drive a yükledim. sadece örnek olarak ekledim
    Datagridview tablom var orada bunu uygulamam gerekiyor. Şu sıralar biraz sardım bu işlere de yapamadım henüz.
    Bunu csharp ta yapmama yardımcı olur musunuz?
    2.1.2.4 ün üst seviyeleri 2.1.2 onunda üstü 2.1 onun üstü de 2
    Yani 2.1.2.4 ün adetini bulmak icin = 2.1.2.4 x 2.1.2 x 2.1 x 2 nin adetlerini çarpmak gerekiyor


    class Model
    {
    public string Duzey { get; set; }
    
    public string Adet { get; set; }
    
    public string ToplamAdet { get; set; }
    }
    
    List<Model> list = new List<Model>();
    private void Form1_Load(object sender, EventArgs e)
    {
    list.Add(new Model() { Duzey = "1", Adet = "2", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "1.1", Adet = "4", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "1.2", Adet = "2", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "1.2.1", Adet = "1", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "1.2.2", Adet = "8", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2", Adet = "9", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2.1", Adet = "2", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2.1.2", Adet = "4", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2.1.2.1", Adet = "1", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2.1.2.2", Adet = "1", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2.1.2.3", Adet = "2", ToplamAdet = "0" });
    list.Add(new Model() { Duzey = "2.1.2.4", Adet = "3", ToplamAdet = "0" });
    DG.DataSource = list;
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    CalculateAll();
    }
    
    public void CalculateAll()
    {
    List<Tuple<int, string>> levels = new List<Tuple<int, string>>();
    DG.Rows.Cast<DataGridViewRow>().ToList().ForEach(row => levels.Add(new Tuple<int, string>(row.Index, row.Cells[0].Value.ToString())));
    levels = levels.OrderByDescending(x => x.Item2).ToList();
    levels.ForEach(level =>
    {
    List<Tuple<int, string>> result = null;
    string lastRoot = DeleteLevel(level.Item2);
    if (lastRoot != level.Item2)
    result = levels.Where(x =>
    {
    bool res = x.Item2 == lastRoot;
    if (res)
    lastRoot = DeleteLevel(lastRoot);
    return res;
    }).ToList();
    if (result?.Count > 0)
    {
    int total = Convert.ToInt32(DG.Rows[level.Item1].Cells[1].Value);
    result.ForEach(r =>
    {
    total *= Convert.ToInt32(DG.Rows[r.Item1].Cells[1].Value);
    }
    );
    DG.Rows[level.Item1].Cells[2].Value = total.ToString();
    }
    else
    {
    DG.Rows[level.Item1].Cells[2].Value = DG.Rows[level.Item1].Cells[1].Value;
    }
    });
    
    }
    
    public string DeleteLevel(string level)
    {
    var splits = level.Split('.');
    if (splits.Length > 1)
    {
    return level.Substring(0, level.Length - (splits[splits.Length - 1].Length + 1));
    }
    return level;
    }
  • 14-04-2020, 15:28:27
    #3
    emeğine ellerine sağlık @pr1d3; mükemmel oldu.