Orderby là Toán Tử sắp xếp tăng dần hoặc giảm dần
Orderby là hàm sắp xếp tăng dần hoặc giảm dần. Orderby sắp xếp các giá trị trong một danh sách tăng dần hoặc giảm dần. Hơn nữa orderby trong linq còn hỗ trợ cú pháp truy vấn và cú pháp phương thức. Bạn có thể sắp xếp danh sách theo nhiều trường được phân tách bằng dấu phẩy.
Linq có các toán tử sắp xếp: Orderby, OrderbyDescending, ThenBy, ThenByDescending, Reverse
Các lưu ý khi sử dụng toán tử linq:
Cú pháp truy vấn linq chỉ hỗ trợ mệnh đề orderby chỉ sắp xếp tăng dần hoặc giảm dần bằng cách giảm dần bằng các sử dụng từ khóa (ascending) và (Descending). Cách sắp xếp dựa vào trường đầu tiên và sau đó nếu giá trị thứ nhất giống nhau thì nó sửa dụng trường thứ 2 để sắp xếp.
vd:
// ordery sắp xếp có điều kiện kết hợp ascending
var kh = from x in Dskh
orderby x.TenKH ascending,x.MaKH descending
select x;
Nếu bạn muốn sắp nhiều trường khác nhau thì khi sử dụng Orderby hoặc OrderbyDescending thì phải kết hợp ThenBy hoặc TheByDescending.
Sử dụng phương thức Reverse để sắp xếp đảo ngược danh sách sử dụng cú pháp và phương thức linq.
Code hướng dẫn thực hành bài tập orderby
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 hocorderby
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<int> dsint = new List<int>();
Random rd = new Random();
private void button1_Click(object sender, EventArgs e)
{
int n = int.Parse(txtNhapSo.Text);
for (int i = 0; i < n; i++)
{
dsint.Add(rd.Next(20));
}
lstSo.Items.Clear();
dsint.ForEach(x => lstSo.Items.Add(x));
}
private void button2_Click(object sender, EventArgs e)
{
dsint = dsint.OrderBy(x => x).ToList();
lstSo.Items.Clear();
dsint.ForEach(x => lstSo.Items.Add(x));
}
private void button3_Click(object sender, EventArgs e)
{
var ds = dsint.OrderByDescending(x => x);
dsint = ds.ToList();
lstSo.Items.Clear();
dsint.ForEach(x => lstSo.Items.Add(x));
}
private void btnGiamQuery_Click(object sender, EventArgs e)
{
var ds = from x in dsint
orderby x
select x;
dsint = ds.ToList();
lstSo.Items.Clear();
dsint.ForEach(x => lstSo.Items.Add(x));
}
private void btnTangQuery_Click(object sender, EventArgs e)
{
var ds = from x in dsint
orderby x descending
select x;
dsint = ds.ToList();
lstSo.Items.Clear();
dsint.ForEach(x => lstSo.Items.Add(x));
}
private void btnGiamMix_Click(object sender, EventArgs e)
{
}
List<KhachHang> Dskh = new List<KhachHang>();
private void Form1_Load(object sender, EventArgs e)
{
Dskh.Add(new KhachHang()
{
MaKH = "KH01",
TenKH = " NGuyễn Văn Tuấn",
DT = "0900000012",
Email="Tuan@abc.com"
}
);
Dskh.Add(new KhachHang()
{
MaKH = "KH02",
TenKH = " NGuyễn Văn Thành",
DT = "09000000012",
Email = "Thanh@abc.com"
}
);
Dskh.Add(new KhachHang()
{
MaKH = "KH03",
TenKH = " NGuyễn Văn Vũ",
DT = "0900000033",
Email = "Vu@abc.com"
}
);
Dskh.Add(new KhachHang()
{
MaKH = "KH04",
TenKH = " NGuyễn Văn Hòa",
DT = "0900000222",
Email = "hoa@abc.com"
}
);
Dskh.Add(new KhachHang()
{
MaKH = "KH05",
TenKH = " NGuyễn Văn Kiên",
DT = "0900067777",
Email = "kien@abc.com"
}
);
Dskh.Add(new KhachHang()
{
MaKH = "KH06",
TenKH = " NGuyễn Văn Hùng",
DT = "09000222222",
Email = "Hung@abc.com"
}
);
Dskh.Add(new KhachHang()
{
MaKH = "KH07",
TenKH = " NGuyễn Văn Phát",
DT = "0900098841",
Email = "Phat@abc.com"
});
Dskh.Add(new KhachHang()
{
MaKH = "KH08",
TenKH = " NGuyễn Văn Tuấn",
DT = "0900098841",
Email = "Phat@abc.com"
}
);
lvKhachHang.Items.Clear();
Dskh.ForEach(x =>
{
ListViewItem lvi = new ListViewItem(x.MaKH);
lvi.SubItems.Add(x.TenKH);
lvi.SubItems.Add(x.DT);
lvi.SubItems.Add(x.Email);
lvKhachHang.Items.Add(lvi);
});
}
private void btnGiamDanMethod_Click(object sender, EventArgs e)
{
var kh = Dskh.OrderBy(x => x.MaKH);
Dskh = kh.ToList();
hienthidskh();
}
private void btnGiamDanQuery_Click(object sender, EventArgs e)
{
var kh = from x in Dskh
orderby x.TenKH
select x;
Dskh = kh.ToList();
hienthidskh();
}
void hienthidskh()
{
lvKhachHang.Items.Clear();
Dskh.ForEach(x =>
{
ListViewItem lvi = new ListViewItem(x.MaKH);
lvi.SubItems.Add(x.TenKH);
lvi.SubItems.Add(x.DT);
lvi.SubItems.Add(x.Email);
lvKhachHang.Items.Add(lvi);
});
}
private void btnTangDanMethod_Click(object sender, EventArgs e)
{
var kh = Dskh.OrderByDescending(x => x.MaKH);
Dskh = kh.ToList();
hienthidskh();
}
private void btnTangGiaDanQuery_Click(object sender, EventArgs e)
{
var kh = from x in Dskh
orderby x.TenKH descending
select x;
Dskh = kh.ToList();
hienthidskh();
}
private void button2_Click_1(object sender, EventArgs e)
{
//Sắp xếp tên tăng dần nếu tên trùng thì mã giảm lần
var kh = Dskh.OrderByDescending(x => x.MaKH)
.OrderBy(x => x.TenKH);
//var kh = from x in Dskh
// orderby x.MaKH
// orderby x.TenKH descending
// select x;
Dskh = kh.ToList();
hienthidskh();
}
private void button3_Click_1(object sender, EventArgs e)
{// ordery sắp xếp có điều kiện kết hợp ascending
var kh = from x in Dskh
orderby x.TenKH ascending,x.MaKH descending
select x;
Dskh = kh.ToList();
hienthidskh();
}
}
}
Tạo lớp Khách Hang: KhachHang
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace hocorderby
{
public class KhachHang
{
public string MaKH { get; set; }
public string TenKH { get; set; }
public string DT { get; set; }
public string Email { get; set; }
}
}
Không có nhận xét nào