نمایش نتایج 1 تا 1 از 1

نام تاپیک: تمرین LINQ

  1. #1
    کاربر تازه وارد آواتار zkazemi
    تاریخ عضویت
    خرداد 1388
    سن
    35
    پست
    55

    تمرین LINQ

    در این مثال لیستی از کمپانی ها و در سطح بعدی در داخل این کمپانی ها کارمندان و در سطح برای هر کارمند آدرس رداریم.
    در این مثال یک ساختار سلسله مراتبی مشاهده می شود.اجازه بدهید ببینیم چطور می تونیم با استفاده از LINQ به جزئیات بالاترین سطح برسیم.
    1- جزئیات لیست کارمندان
    2- تعداد هر کارمند در هر کمپانی
    3- لیست کارمندانی که در بنگالور هستندو
    4- لیست کارمندی که بالاترین پرداخت رو در هر کمپانی داشته است .
    5- روی هم رفته بالاترین پرداخت کارمند
    6- حقوق پرداخت شده توسط کمپانی ها در هر شهر
    7- حقوق پرداخت شده توسط هر کمپانی در هر شهر
    لیست جزئیات کارمندان
    اکنون تمام کارکنان را با نام شرکت و جزئیاتشان لیست خواهیم گرفت :

    var EmpDetails = from comp in ListCompany
    select new {
    Emp = (from emp in comp.ListEmp
    select new {
    Company = comp.Name,
    emp
    })
    };

    در این جا از زیر پرس و جو (subquery)استفاده کردیم . چراکه ما تمام جزئیات کارمند با نام شرکت مربوطه شان را نیاز داریم که هردو در سطحهای مختلف قرار دارند. اول از یک حلقه برای دسترسی به هریک از کمپانی ها در لیست کمپانی استفاده کردیم.

    from comp in ListCompany

    و سپس برای هر کمپانی انتخاب شده یک حلقه برای هر کدام از کارمندان آن نوشته شده است.
    from emp in comp.ListEmp
    تعداد کارمندان در هر کمپانی

    var LessEmp = from Comp in ListCompany
    select new {
    Comp.Name,
    EmpCount = Comp.ListEmp.Count
    };

    لیست کارمندانی که در بنگالور هستند
    در این جا از عبارت ترکیبی جهت یافتن تمام کارمندانی که در نام شهر محل اقامت انها رشته BAN وجود دارد استفاده شده است:

    var EmpInACity = from comp in ListCompany
    from emplist in comp.ListEmp
    where emplist.Address.City.ToUpper().Contains("BAN& quot;)
    select new {
    CompName = comp.Name,
    EmployeeName = emplist.Name
    };

    در این جا برای پیدا کردن کارمندی که بالاترین پرداخت را داشته ابتدا حلقه ای برای همه کمپانی ها و کارمندان داخل هر یک از کمپانی ها استفاده کردیم . شرط قسمت where تنها کارمندانی را که حقوق آنها معادل حداکثر حقوق پرداختی در کمپانی جاری است را بر می گرداند.

    var EmpHighSalEachComp = from comp in ListCompany
    from empHigh in comp.ListEmp
    where empHigh.salary == comp.ListEmp.Max(
    HighEmp => HighEmp.salary)
    select new {
    CompanyName = comp.Name,
    EmpHighName = empHigh.Name,
    EmpHighSal = empHigh.salary
    };


    مثال زبر همون مثال بالا بایک تفاوت در قسمت where میباشد. در این مثال حقوق کارمند با حداکثر حقوق از همه کمپانی ها بررسی می شود.





    var EmpHighSal = from comp in ListCompany
    from emp in comp.ListEmp
    where emp.salary == ListCompany.Max(
    TComp => TComp.ListEmp.Max(HighEmp => HighEmp.salary))
    select new {
    CompanyName = comp.Name ,
    EmployeeName = emp.Name,
    EmpSal = emp.salary
    };

    حقوق پرداختی توسط کمپانی ها در هر شهر
    در این مثال قصد داریم تا شهر ها رو گروه بندی کرده و مجموع حقوق همه کارمندانی که در آن شهر هستند را محاسبه کنیم.

    var CompanyCityWise = from comp in ListCompany

    from emp in comp.ListEmp
    group emp by emp.Address.City into CityWiseEmp
    select new {
    State = CityWiseEmp.Key,
    TotalSalary = CityWiseEmp.Sum(emp => emp.salary)
    };

    حقوق پرداخت شده بوسیله هر کمپانی در هر شهر

    var CityWiseSalary = from comp in ListCompany
    select new {
    comp.Name,
    Emp =(from emp in comp.ListEmp
    group emp by emp.Address.City into CityWiseEmp
    select new {
    State = CityWiseEmp.Key,
    TotalSalary = CityWiseEmp.Sum(emp => emp.salary)
    })
    };

    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله zkazemi : دوشنبه 19 مرداد 1388 در 13:36 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •