1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

دستورالعمل نوشتن query ها در LINQ

شروع موضوع توسط AftabGardoon ‏27/3/19 در انجمن ASP.NET

Tags:
  1. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    استفاده از method syntax در یک عبارت query:
    • همانطور که در Query Syntax and Method Syntax in LINQ (C#) توضیح داده شد، برخی عملکردهای query تنها با استفاده از method syntax توضیح داده می شوند. کد زیر نمره ی کلی هر Student را در توالی نمره محاسبه می کند و سپس روش Average() را روی نتایج query فرا می خواند تا نمره ی میانگین کلاس را محاسبه کند. به قرارگیری پرانتزها در اطراف عبارت query دقت داشته باشید.
    کد:
    var studentQuery6 =‎
    ‎    from student in students
    ‎    let totalScore = student.Scores[0] + student.Scores[1] +‎
    ‎        student.Scores[2] + student.Scores[3]‎
    ‎    select totalScore;‎
     
    double averageScore = studentQuery6.Average();‎
    Console.WriteLine("Class average score = {0}", averageScore);‎
     
    ‎// Output: ‎
    ‎// Class average score = 334.166666666667‎
     
    m naizar و MajiD.JD از این پست تشکر کرده اند.
  2. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    تبدیل یا طرح در عبارت select:
    1. برای یک query خیلی متداول است تا یک توالی ایجاد کند که عناصر آن با عناصر در ترتیب های منبع متفاوت است. Query قبلی و اجرای لوپ را حذف کنید یا در مورد آن کامنت بدهید و آن را با کد زیر جایگزین کنید. دقت داشته باشد که query ترتیبی از رشته ها را ( نه دانشجویان) گزارش می دهد و این واقعیت در لوپ foreach منعکس می شود.​
    کد:
                                        IEnumerable<string> studentQuery7 =‎
    ‎    from student in students
    ‎    where student.Last == "Garcia" ‎
    ‎    select student.First;‎
     
    Console.WriteLine("The Garcias in the class are:");‎
    foreach (string s in studentQuery7)‎
    ‎{‎
    ‎    Console.WriteLine(s);‎
    ‎}‎
     
    ‎// Output: ‎
    ‎// The Garcias in the class are: ‎
    ‎// Cesar ‎
    ‎// Debra ‎
    ‎// Hugo‎
                                    </string>
    کد پیشین در این دستورالعمل نشان داد که میانگین نمره ی این کلاس 334 می باشد. برای تولید ترتیبی از Students که نمره ی کلی آنها بیشتر از میانگین کلاس می باشد، به همراه Student ID آنها، می توانید از یک نوع بدون نام در عبارت select استفاده کنید.
    کد:
                                        var studentQuery8 =‎
    ‎    from student in students
    ‎    let x = student.Scores[0] + student.Scores[1] +‎
    ‎        student.Scores[2] + student.Scores[3]‎
    ‎    where x > averageScore
    ‎    select new { id = student.ID, score = x };‎
     
    foreach (var item in studentQuery8)‎
    ‎{‎
    ‎    Console.WriteLine("Student ID: {0}, Score: {1}", item.id, item.score);‎
    ‎}‎
     
    ‎// Output: ‎
    ‎// Student ID: 113, Score: 338 ‎
    ‎// Student ID: 114, Score: 353 ‎
    ‎// Student ID: 116, Score: 369 ‎
    ‎// Student ID: 117, Score: 352 ‎
    ‎// Student ID: 118, Score: 343 ‎
    ‎// Student ID: 120, Score: 341 ‎
    ‎// Student ID: 122, Score: 368‎ 
     
    m naizar و MajiD.JD از این پست تشکر کرده اند.
  3. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    با تشکر از سایت تحلیل داده: )!
     
    m naizar و MajiD.JD از این پست تشکر کرده اند.