c#, MVC

Pratik1

class Ogrenci
        {
            private int ogrNo;
            private string isim;
            private int not1;
            private int not2;
            public int OgrNo { get; set; }
            public string Isim { get; set; }
            public double Not1 { get; set; }
            public double Not2 { get; set; }
        }
static void Main(string[] args)
        {
            List<Ogrenci> ogrListesi = new List<Ogrenci> {
                new Ogrenci{OgrNo = 1, Isim = "Ahmet", Not1=85, Not2=75},
                new Ogrenci{OgrNo = 2, Isim = "Alper", Not1=95, Not2=50},
                new Ogrenci{OgrNo = 3, Isim = "Emin", Not1=70, Not2=20}
            };

            ogrListesi.ForEach(x => Console.WriteLine(x.Isim));

            var yeniliste = from x in ogrListesi where x.Not1 > 80 & x.Not2 > 70 select x;
           // yeniliste = from x in yeniliste where x.Not2 > 70 select x;

            Console.WriteLine("");

            foreach (var item in yeniliste)
            {
                Console.WriteLine("Orgenci adı: {0} , Aldığı 1. not: {1} ve 2. not {2}", item.Isim, item.Not1, item.Not2);
            }
            Console.ReadLine();
        }

Basit yazılmıştır tasarım deseni yoktur, RAM’deki listeden veri filtreleme işlemi için kullanılabilir.


Buna bir de Prototype Design Pattern ile düzenleyelim.

//Ogrenci.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace denemeler
{
    abstract class Ogrenci
    {
        private int ogrNo;
        private string isim;
        private int not1;
        private int not2;
        public int OgrNo { get; set; }
        public string Isim { get; set; }
        public double Not1 { get; set; }
        public double Not2 { get; set; }
        public abstract Ogrenci Clone();
    }
}
//OgrenciFiltrele.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace denemeler
{
    class OgrenciFiltrele : Ogrenci
    {
        public override Ogrenci Clone()
        {
            return (Ogrenci)this.MemberwiseClone();
        }

        private List<OgrenciFiltrele> ogrencis;
        public List<OgrenciFiltrele> Ogrencis { get => ogrencis; set => ogrencis = value; }

        public void Filtreli(List<OgrenciFiltrele> ogrListesi, int? filtre1, int? filtre2)
        {
            var yeniliste = from x in ogrListesi select x;

            if (filtre1 != null)
            {
                yeniliste = from x in yeniliste where x.Not1 > filtre1 select x;
            }
            if (filtre2 != null)
            {
                yeniliste = from x in yeniliste where x.Not2 > filtre2 select x;
            }
            Ogrencis = yeniliste.ToList();
        }
    }
}
//Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace denemeler
{
    class Program
    {
        static void Main(string[] args)
        {
            List<OgrenciFiltrele> ogrListesi = new List<OgrenciFiltrele> {
                new OgrenciFiltrele{OgrNo = 1, Isim = "Ahmet", Not1=88, Not2=74},
                new OgrenciFiltrele{OgrNo = 2, Isim = "Alper", Not1=95, Not2=76},
                new OgrenciFiltrele{OgrNo = 3, Isim = "Emin", Not1=70, Not2=20}
            };

            OgrenciFiltrele filtrelenmis = new OgrenciFiltrele();
            int? filtre1 = 85;
            int? filtre2 = null;//75
            filtrelenmis.Filtreli(ogrListesi, filtre1, filtre2);

            Console.WriteLine("");

            foreach (var item in filtrelenmis.Ogrencis)
            {
                Console.WriteLine("Orgenci adı: {0} , Aldığı 1. not: {1} ve 2. not {2}", item.Isim, item.Not1, item.Not2);
            }

            Console.ReadLine();
        }

    }
}

nullable değerleri MVC için ekledim. Birden fazla arama değişkeninin girilebildiği yerlerde tek değerin girilmesi durumunda boş filtreler null döner.

Yazı oluşturuldu 38

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön