Hướng dẫn làm tìm kiếm theo giá trong mvc 5

Nếu bạn import ok rồi thì bạn tạo cho mình file HomeController.cs trong thư mục BasicLinQ/Controllers

Đầu tiên bạn cần thêm 2 đoạn code dưới đây vào file HomeController.cs vừa tạo

  • using BasicLinQ.Models;
  • private QLTSEntities _db = new QLTSEntities();

HomeControllers.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

Vậy là xong, giờ ta thử nghiệm một vài câu lệnh LinQ thôi nào, mà mình nói thật LinQ nó rất thông mình đấy nhé mọi người

Example 1: Lấy tất cả danh sách nhân viên trong table Nhanvien như sau:

//HomeController.cs

public ActionResult Index()

    {
        //TH1:
        var nhanvien = (from s in _db.NHANVIENs select s).ToList();
        ViewBag.nhanviens = nhanvien;
        //TH2:
        //var nhanvien = _db.NHANVIENs.ToList();
        //ViewBag.nhanviens = nhanvien;
        return View();
    }
//Index.cshtml

<table class="table table-bordered">

                <thead>
                    <tr>
                        <th>MANV</th>
                        <th>TENNV</th>
                        <th>TENDV</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var item in ViewBag.nhanviens)
                    {
                    <tr>
                        <td>@item.MaNV</td>
                        <td>@item.TenNV</td>
                        <td>@item.DONVI.TenDV</td>
                    </tr>
                    }
                </tbody>
            </table>
Hướng dẫn làm tìm kiếm theo giá trong mvc 5

Điều gì đã xảy ra, ta đâu có liên kết giữa table NHANVIEN và DONVI, sao ta lại lấy được TenDV, đó chính là điều mình cần nói, LinQ đã hổ trợ cho ta, nó ánh xạ giữa các table với nhau, bạn có thể nhìn Models NHANVIEN.cs đưới đây, nó được tạo ra như sau:

public partial class NHANVIEN

{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public NHANVIEN()
    {
        this.SOMUONs = new HashSet<SOMUON>();
    }
    public string MaNV { get; set; }
    public string TenNV { get; set; }
    public string Diachi { get; set; }
    public string Dienthoai { get; set; }
    public string MaDV { get; set; }
    public virtual DONVI DONVI { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<SOMUON> SOMUONs { get; set; }
}
Vì thế bạn có thể trỏ đến đối tượng TenDV. @item.DONVI.TenDV

Example 2: Sắp xếp thứ tự tăng dần(ASC)/giảm dần(DESC)

// sử dụng cú pháp query truy vấn

var nhanvien = (from s in _db.NHANVIENs

                        orderby s.MaNV ascending
                        select s
                        ).ToList();
//OR
        var nhanvien = (from s in _db.NHANVIENs
                        orderby s.MaNV descending
                        select s
                       ).ToList();
// sử dụng phương thức truy vấn

var nhanvien = _db.NHANVIENs.OrderBy(s => s.MaDV).ToList(); var nhanvien = _db.NHANVIENs.OrderByDescending(s => s.MaDV).ToList();

Example 3:Tìm các nhân viên thuộc đơn vị "KKHCB", ta sẽ liên kết giữa table NHANVIEN & DONVI

var nhanvien = (from s in _db.NHANVIENs

                        where s.DONVI.MaDV == "KKHCB"
                        select s).ToList();
var nhanvien2 = _db.NHANVIENs
            .Where(s => s.DONVI.MaDV.Contains("KKHCB"))
            .ToList();
        ViewBag.nhanviens = nhanvien;
        ViewBag.nhanviens2 = nhanvien2;
        return View();
Examle 4: Thêm một nhân viên thuộc đơn vị(DONVI) "KHCB"

public ActionResult Store(NHANVIEN _nv)

    {
        _nv.TenNV = "Ts.Lưu Văn Thành";
        _nv.Diachi = "HCM";
        _nv.Dienthoai = "0123456789";
        _nv.MaDV = "KKHCB";
        _db.NHANVIENs.Add(_nv);
        _db.SaveChanges();
        return RedirectToAction("Index");
    }
Trên là một ví dụ mẫu thôi, bình thường thì bạn dùng form để gửi data đến function Store để xử lý nhé, nếu bạn dùng form thì chỉ cần nhập đủ các trường, sao đó chỉ cần dùng 2 cầu lệnh dưới đây để thêm

_db.NHANVIENs.Add(_nv); _db.SaveChanges();

Example 5: Cập nhật nhân viên MaNV="KHCB003"

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

0

Example 6: Xóa nhân viên MaNV="KHCB003"

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

1

Example 7: Thống kê tổng số nhân viên của từng đơn vị(DONVI)

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

2

LinQ:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

3

Example 8: chúng ta thống kê tài sản thuộc đơn vị nào, và đơn vị đó sử dụng số lượng bao nhiêu

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

4

//OR

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

5

Example 9: thống kê đơn vị có những tài sản nào

SQL:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

6

LinQ:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

7

Example 10: Liệt kê danh sách tài sản theo năm tháng

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using BasicLinQ.Models; namespace BasicLinQ.Controllers {

public class HomeController : Controller
{
    private QLTSEntities _db = new QLTSEntities();
    // GET: Home
    public ActionResult Index()
    {
        return View();
    }
}
}

8

Đi qua sơ sơ vậy, ta cũng hiểu được LinQ nó thông minh qua, giúp ta ít tốn code viết câu lệnh truy vấn, LinQ quá thông minh