Ad Code

✨🎆 Diwali Dhamaka Offer! 🎆✨

Get 20% OFF on All Courses at Shiva Concept Solution click

LINQ to ASP.NET CORE MVC by Shiva Sir

 🔷 What is LINQ?

LINQ (Language Integrated Query) is a .NET feature that allows you to query collections (like arrays, lists, and database entities) in a SQL-like or method-chaining syntax directly within C# code.


🔷 Types of LINQ Syntax:

Query Syntax (SQL-like)


Method Syntax (Fluent/Chaining)


Mixed Syntax (Less common)


🔷 Common LINQ Operations

Operation Example (Method Syntax)

Where .Where(x => x.Age > 18)

Select .Select(x => x.Name)

OrderBy .OrderBy(x => x.Name)

GroupBy .GroupBy(x => x.Department)

Join .Join(..., ..., ..., ...)

Any, All, Count, FirstOrDefault, Take, Skip, etc.


🔷 ASP.NET Core MVC Example: Student Management System

Step 1: Setup Entity

Models/Student.cs


public class Student

{

    public int Id { get; set; }

    public string Name { get; set; }

    public int Marks { get; set; }

    public string Subject { get; set; }

}

Step 2: Create a Fake List for LINQ Demo

Controllers/StudentController.cs


using Microsoft.AspNetCore.Mvc;

using System.Collections.Generic;

using System.Linq;

using YourApp.Models;


public class StudentController : Controller

{

    private List<Student> GetStudents()

    {

        return new List<Student>

        {

            new Student { Id = 1, Name = "Amit", Marks = 85, Subject = "Math" },

            new Student { Id = 2, Name = "Priya", Marks = 92, Subject = "Science" },

            new Student { Id = 3, Name = "Rahul", Marks = 78, Subject = "English" },

            new Student { Id = 4, Name = "Sneha", Marks = 88, Subject = "Math" }

        };

    }


    public IActionResult Index()

    {

        var students = GetStudents();


        // LINQ Examples:

        var highScorers = students.Where(s => s.Marks > 80).ToList();


        var groupedBySubject = students

            .GroupBy(s => s.Subject)

            .Select(g => new

            {

                Subject = g.Key,

                AverageMarks = g.Average(x => x.Marks),

                Students = g.ToList()

            });


        ViewBag.HighScorers = highScorers;

        ViewBag.GroupedData = groupedBySubject;


        return View(students);

    }

}

Step 3: View Display with Razor

Views/Student/Index.cshtml


<h2>All Students</h2>

<table class="table">

    <thead>

        <tr><th>Name</th><th>Marks</th><th>Subject</th></tr>

    </thead>

    <tbody>

        @foreach(var student in Model)

        {

            <tr>

                <td>@student.Name</td>

                <td>@student.Marks</td>

                <td>@student.Subject</td>

            </tr>

        }

    </tbody>

</table>


<h3>🎯 High Scorers (Marks > 80)</h3>

<ul>

@foreach(var s in ViewBag.HighScorers)

{

    <li>@s.Name - @s.Marks</li>

}

</ul>


<h3>📚 Grouped By Subject with Average Marks</h3>

@foreach(var g in ViewBag.GroupedData)

{

    <h4>@g.Subject - Avg: @g.AverageMarks</h4>

    <ul>

        @foreach(var s in g.Students)

        {

            <li>@s.Name (@s.Marks)</li>

        }

    </ul>

}


Join Operation in LINQ:


A Student is enrolled in a Course.


We want to join Student and Course to show combined info like:

Student Name, Course Name, and Marks.


🔷 Step-by-Step Example

🧩 Models

Models/Student.cs


public class Student

{

    public int Id { get; set; }

    public string Name { get; set; }

    public int Marks { get; set; }


    public int CourseId { get; set; }  // Foreign Key

}

Models/Course.cs

csharp

Copy

Edit

public class Course

{

    public int Id { get; set; }

    public string CourseName { get; set; }

}

📋 Create Sample Data in Controller

Controllers/JoinDemoController.cs


using Microsoft.AspNetCore.Mvc;

using System.Collections.Generic;

using System.Linq;

using YourApp.Models;


public class JoinDemoController : Controller

{

    private List<Student> GetStudents()

    {

        return new List<Student>

        {

            new Student { Id = 1, Name = "Amit", Marks = 85, CourseId = 1 },

            new Student { Id = 2, Name = "Priya", Marks = 92, CourseId = 2 },

            new Student { Id = 3, Name = "Rahul", Marks = 78, CourseId = 1 },

            new Student { Id = 4, Name = "Sneha", Marks = 88, CourseId = 3 }

        };

    }


    private List<Course> GetCourses()

    {

        return new List<Course>

        {

            new Course { Id = 1, CourseName = "Math" },

            new Course { Id = 2, CourseName = "Science" },

            new Course { Id = 3, CourseName = "English" }

        };

    }


    public IActionResult Index()

    {

        var students = GetStudents();

        var courses = GetCourses();


        // 🔗 LINQ Join

        var result = from s in students

                     join c in courses on s.CourseId equals c.Id

                     select new

                     {

                         StudentName = s.Name,

                         CourseName = c.CourseName,

                         Marks = s.Marks

                     };


        ViewBag.JoinedData = result.ToList();


        return View();

    }

}

🖥️ View

Views/JoinDemo/Index.cshtml

html

Copy

Edit

<h2>Student-Course Join Example</h2>

<table class="table">

    <thead>

        <tr>

            <th>Student Name</th>

            <th>Course</th>

            <th>Marks</th>

        </tr>

    </thead>

    <tbody>

        @foreach (var item in ViewBag.JoinedData)

        {

            <tr>

                <td>@item.StudentName</td>

                <td>@item.CourseName</td>

                <td>@item.Marks</td>

            </tr>

        }

    </tbody>

</table>

🔁 Join Using Method Syntax

If you prefer method syntax:



var result = students.Join(courses,

    s => s.CourseId,

    c => c.Id,

    (s, c) => new

    {

        StudentName = s.Name,

        CourseName = c.CourseName,

        Marks = s.Marks

    });

إرسال تعليق

0 تعليقات