Linq To Sql server Truy vấn sản phẩm theo danh mục
Hướng dẫn các truy vấn sản phẩm theo danh mực trong linq to sql c# viết các viết khác nhau.
Hướng dẫn cách truy vấn sản phẩm bằng methodsyntax
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LinqToSQL
{
public partial class frmTruyvansanphamtheodanhmuc : Form
{
public frmTruyvansanphamtheodanhmuc()
{
InitializeComponent();
}
private void frmTruyvansanphamtheodanhmuc_Load(object sender, EventArgs e)
{
// hiện thì danh sách danh mục lên listbox
CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();
List<DanhMuc> dsdm = contex.DanhMucs.ToList();// hiện hết danh mục
//// cách 1 hiện tất cả
//lstDM.Items.Clear();
//dsdm.ForEach(x =>
//{
// lstDM.Items.Add(x.MaDM + "");
// lstDM.Items.Add(x.TenDM);
//}
//);
// các 2 dùng DataBindings
lstDM.DataSource = dsdm;
lstDM.ValueMember = "MaDM"; // mã danh mục không hiên thi lên giao diện dùng cho lâp trình viên code
lstDM.DisplayMember = "TenDM"; // tên danh mục
clickdautien = true; // chờ nạp hết các dòng dữ liệu thì chúng ta gán bằng true
}
bool clickdautien = false;// đối sự kiện click chọn nên tạo biến đầu tiền là false
private void lstDM_SelectedIndexChanged(object sender, EventArgs e)
{
CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();
// lưu ý SelectedIndexChanged là lắng nghe sự kiện hoặc có sự thay đổi dòng dữ liệu
if (clickdautien==false)
{
return; // chưa tải xong
}
if (lstDM.SelectedIndex==-1)// tải xong chưa chọn
{
return;
}
int ma = (int)lstDM.SelectedValue; //SelectedValue chính là ValueMember mà ValueMember=MaDM là kiểu int nên ép kiểu.
List<SanPham> dssp = contex.SanPhams.Where(X => X.MaDM == ma).ToList();// method syntax lọc toàn bộ sản phẩm theo đúng mã DM ngta chọn
lvSanPham.Items.Clear();
dssp.ForEach(x =>
{
ListViewItem lvi = new ListViewItem(x.Ma + "");
lvi.SubItems.Add(x.Ten);
lvi.SubItems.Add(x.DonGia + "");
lvSanPham.Items.Add(lvi);
}
);
}
}
}
Hướng dẫn cách truy vấn sản phẩm bằng Query syntax bằng các hiện thì danh mục lên treeview và hiển thị sản phẩm và chi iết 1 sản phẩm lên listview.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LinqToSQL
{
public partial class frmTruyvansanphamtheodanhmucquery : Form
{
public frmTruyvansanphamtheodanhmucquery()
{
InitializeComponent();
}
private void frmTruyvansanphamtheodanhmucquery_Load(object sender, EventArgs e)
{
CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();
List<DanhMuc> dsdmtree = contex.DanhMucs.ToList();
tvDanhMuc.Nodes.Clear();
foreach (DanhMuc item in dsdmtree)
{
TreeNode nodedm = new TreeNode(item.TenDM);
nodedm.Tag = item.MaDM;
tvDanhMuc.Nodes.Add(nodedm);
nodedm.ForeColor = Color.Blue;
// lọc lấy danh sách sản phẩm theo danh mục
// List<SanPham> dssp = contex.SanPhams.ToList();
//hoặc
List<SanPham> dssp = (from x in contex.SanPhams
where x.MaDM == item.MaDM
select x).ToList();
// đưa sản phẩm vào node danh mục
foreach (SanPham sp in dssp)
{
TreeNode nodeSP = new TreeNode(sp.Ten);
nodeSP.Tag = sp.Ma;
// add nodesp vào nodedm
nodedm.Nodes.Add(nodeSP);
}
}
}
private void tvDanhMuc_AfterSelect(object sender,TreeViewEventArgs e)
{
// TreeViewEventArgs e dựa vào biến e để ta biết người dùng chọn node nào
if (e.Node==null)//chưa chọn
{
return;
}
// ở đây node có 2 cấp là node danh mục cấp 0 và node sản phẩm cấp 1
if (e.Node.Level==0)// node danh mực
{
int madm = (int)e.Node.Tag; // là= nodedm.Tag = item.MaDM + "";
Hienthisanphamtheodanhmuc(madm);
}
else if (e.Node.Level==1)// node sản phẩm
{
int masp = (int)e.Node.Tag;
Hienthichitietsanpham(masp);
}
}
private void Hienthichitietsanpham(int masp)
{
CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();
SanPham sp = contex.SanPhams.FirstOrDefault(x=>x.Ma == masp);
if (sp!=null)
{
lvsanpham.Items.Clear();
ListViewItem liv = new ListViewItem(sp.Ma + "");
liv.SubItems.Add(sp.Ten);
liv.SubItems.Add(sp.DonGia + "");
lvsanpham.Items.Add(liv);
}
}
private void Hienthisanphamtheodanhmuc(int madm)
{
CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();
List<SanPham> csdlsp = (from x in contex.SanPhams
where x.MaDM == madm
select x).ToList();// hiện toàn bộ sản phẩm theo danh mục
lvsanpham.Items.Clear();
csdlsp.ForEach(x =>
{
ListViewItem lvi = new ListViewItem(x.Ma + "");
lvi.SubItems.Add(x.Ten);
lvi.SubItems.Add(x.DonGia + "");
lvsanpham.Items.Add(lvi);
}
);
}
}
}
Không có nhận xét nào