• To’plamlar ustida amallar: birlashma, kesishma va farq
  • Birlashma Ikkita to’plamni birlashmasini aniqlash uchun Union()
  • Select
  • Samsung Samsung Galaxy S5 - 20000




    Download 1,39 Mb.
    bet30/53
    Sana30.11.2023
    Hajmi1,39 Mb.
    #108476
    1   ...   26   27   28   29   30   31   32   33   ...   53
    Bog'liq
    Dasturiy injiniring

    Samsung
    Samsung Galaxy S5 - 20000
    Samsung Galaxy S4 - 15000


    Apple
    iPhone5 - 28000
    iPhone4S - 23000

    Xuddi yuqoridagi natijaga quyidagi GroupBy() metodi orqali ega bo’lish mumkin:


    var groups = db.Phones.GroupBy(p => p.Company.Name);


    Key xususiyatidan tashqari guruhda Count xususiyati ham mavjud. U ushbu guruhda mavjud elementlar sonini o’zida saqlaydi. Guruh kaliti va unda mavjud bo’lgan elementlar sonidan iborat yangi elementni hosil qilamiz:
    using (PhoneContext db = new PhoneContext())
    {
    var groups = from p in db.Phones
    group p by p.Company.Name into g
    select new { Name = g.Key, Count = g.Count() };
    // аlternativ usul
    // var groups = db.Phones.GroupBy(p=>p.Company.Name)
    // .Select(g => new { Name = g.Key, Count = g.Count()});
    foreach (var c in groups)
    Console.WriteLine("Ishlab chiquvchi: {0} modellar soni: {1}", c.Name, c.Count);
    }
    Bizning misolda quyidagi natija hosil qilinadi:
    Ishlab chiquvchi: Apple Modellar soni: 2
    Ishlab chiquvchi: Samsung Modellar soni: 2

    To’plamlar ustida amallar: birlashma, kesishma va farq


    Linq dagi bir qator metodlar tanlash natijasi ustida ish bajaradi. Tanlash natijasi to’plamdan iborat bo’lganligi sababli, ikkita to’plam ustida birlashma, kesishma va farq amallarini bajarish mumkin.
    Ammo ushbu to’plamlar bir xil tuzilmaga ega bo’lishlari shart.


    Birlashma
    Ikkita to’plamni birlashmasini aniqlash uchun Union() metodidan foydalaniladi:
    using (PhoneContext db = new PhoneContext())
    {
    var phones = db.Phones.Where(p => p.Price < 25000)
    .Union(db.Phones.Where(p => p.Name.Contains("Samsung")));
    foreach (var item in phones)
    Console.WriteLine(item.Name);
    }
    Union metodi parametr sifatida ikkinchi to’plamni qabul qiladi va birinchi to’plam bilan birlashtiradi.
    Biz ikki xil tuzilmali to’plamlarni birlashtira olmaymiz. Masalan, telefon modellari va kompaniyalar jadvallarini birlashtirish mumkin emas. Ammo quyidagi yozuv o'rinli:
    var result = db.Phones.Select(p => new { Name = p.Name })
    .Union(db.Companies.Select(c => new { Name = c.Name }));

    Birinchi to’plamda Select metodidan so’ng Name ustunidan iborat elementlar to’plami shakllantiriladi. Ikkinchi to’plamda Select metodidan so’ng kompaniya nomini ifodalovchi Name ustunidan iborat elementlar to’plami shakllantiriladi. Shuning uchun har ikkala to’plam bir jinsli bo’lganligi sababli ularni birlashtirish mumkin.





    Download 1,39 Mb.
    1   ...   26   27   28   29   30   31   32   33   ...   53




    Download 1,39 Mb.