Bài giảng Lập trình ứng dụng quản lý - Tuần 7: LINQ cơ bản (Phần 2)
10/14/2019
Lập trình Ứng dụng quản lý
LINQ
part 2
Nội dung
Query syntax
Lambda syntax
Các phép truy vấn trên LINQ
1
10/14/2019
Nội dung
Query syntax
Lambda syntax
Các phép truy vấn trên LINQ
Query syntax
Yêu cầu truy vấn
from n in list
where n < 3
select n;
foreach (int n in list)
{
if (n < 3) //xử lý n
}
2
10/14/2019
Query syntax - let
var list =
new List<int> { 1,2,3,4,5,6,7,8,9 };
var query = from n in list
where n > 3 && n < 8
let g = n * 2
let newList = new List<int> {1,2,3}
from l in newList
select new { l, r = g * l };
Query syntax – let (tt)
var query =
from l in File.ReadAllLines(path)
let parts = l.Split(';')
where parts[0] == server
select new {
Server = parts[0], Url = parts[1]
};
3
10/14/2019
Query syntax – join
Có ý nghĩa như phép kết bảng trong cơ
sở dữ liệu quan hệ
var query =
from c in Categories
join p in Products on c.CategoryID
equals p.CategoryID
select new {c.CategoryName,
p.ProductName};
Query Syntax – orderby
var query =
from m in
typeof(string).GetMethods()
where m.IsStatic == true
orderby m.Name [descending]
select m.Name;
4
10/14/2019
Query Syntax – group… by
var query =
from m in
typeof(string).GetMethods()
where m.IsStatic == true
orderby m.Name [descending]
group m by m.Name;
group đã bao hàm ý nghĩa select nên
không cần select nữa
Query Syntax – group… by (tt)
Group nhiều thuộc tính
var query =
from p in Products
join c in Categories on p.CategoryID
equals c.CategoryID
group p by new {
c.CategoryID, c.CategoryName
};
5
10/14/2019
Query Syntax – group… by… into
var query =
from m in typeof(string).GetMethods()
where m.IsStatic == true
orderby m.Name [descending]
group m by m.Name into gr
select new {
Key = gr.Key, Slg = gr.Count()
};
Query Syntax – group… by… into (tt)
6
10/14/2019
Query Syntax
Cá c from có thể được viết lồng nhau
var query =
from list in lists
from num in list
select num;
Nội dung
Query syntax
Lambda syntax
Các phép truy vấn trên LINQ
7
10/14/2019
Lambda Syntax
Bản chất của LINQ là các lệnh truy vấn được
viết dưới dạng lambda syntax
Query syntax dễ đọc, dễ hiểu hơn so với
lambda syntax
Khi thực thi, query syntax sẽ được compiler
chuyển về lambda sysntax
Dùng lambda syntax mới có thể tận dụng
được hết sức mạnh của LINQ
Lambda Syntax (tt)
Các truy vấn LINQ được viết bằng query
syntax hoàn toàn có thể được biểu diễn dưới
dạng lambda syntax
Không có chiều ngược lại
Nên kết hợp query syntax & lambda syntax.
8
10/14/2019
Nội dung
Query syntax
Lambda syntax
Các phép truy vấn trên LINQ
Danh sá ch cá c phé p toá n
9
10/14/2019
Danh sá ch cá c phé p toá n (tt)
Phép chọn
Where: giữ lại các phần tử thoả điều kiện
Query Syntax
var query = from n in list
where n < 3
select n;
Lambda Syntax
var query = list.Where(n => n < 3);
10
10/14/2019
Phép chiếu
Select
Query Syntax
var query= from c in GetCustomers()
where c.City.StartWith(“A”)
select new { c.City, c.ContactName };
Lambda Syntax
var query = GetCustomers()
.Where(c => c.City.StartWith(“A”))
.Select(c => new { c.City,
c.ContactName });
//.Select(c => c);
Phép chiếu (tt)
Select (có index)
Lambda Syntax
int[] numbers = { 3, 9, 100, 4, 2, 6, 7, 1, 8 };
var query = numbers
.Select((n, idx) => new {idx, n})
.Where(item => item.idx % 2 == 0);
11
10/14/2019
Phép chiếu SelectMany
SelectMany: dùng “phẳng hoá” tập hợp
Phép chiếu SelectMany (tt)
12
10/14/2019
Phép chiếu SelectMany (tt)
Phép chiếu SelectMany (tt)
13
10/14/2019
Phép kết Join
Query Syntax:
var query =
from c in Categories
join p in Products on c.CategoryID equals
p.CategoryID
select new {c.CategoryName, p.ProductName};
Lambda Syntax:
var query = Categories.Join(
Products,
c => c.CategoryID,
p => p.CategoryID,
(c,p) => new {c.CategoryName,
p.ProductName}
);
Phép kết Join trên nhiều thuộc tính
Query Syntax:
var query =
from s in ShoppingMalls
join h in Houses on
new { s.CouncilCode, s.PostCode }
equals new { h.CouncilCode,
h.PostCode }
select s;
14
10/14/2019
Phép kết Join trên nhiều thuộc tính (tt)
Lambda Syntax:
var query =
ShoppingMalls.Join(
Houses,
s => new { s.CouncilCode, s.PostCode },
h => new { h.CouncilCode, h.PostCode },
(s,h) => s
);
Phép toán sắp xếp
OrderBy, OrderByDescending
15
10/14/2019
Phép toán sắp xếp (tt)
ThenBy
Phép toán sắp xếp (tt)
Reverse: đảo dãy
{ 3, 2, 1 }
16
10/14/2019
Phé p gom nhó m
Query Syntax:
var query =
from p in Products
join c in Categories on p.CategoryID
equals c.CategoryID
group p.ProductName by c.CategoryName;
Phé p gom nhó m (tt)
Lambda Syntax:
var query = Products.Join(
Categories,
p => p.CategoryID,
c => c.CategoryID,
(p, c) => new { p.ProductName, c.CategoryName }
)
.GroupBy(i=>i.CategoryName, i=>i.ProductName);
17
10/14/2019
Phé p gom nhó m (tt)
Phé p gom nhó m (tt)
Query Syntax:
var query =
from p in Products
join c in Categories on p.CategoryID
equals c.CategoryID
group p by new { c.CategoryID, c.CategoryName }
into grpRow
select new {
grpRow.Key.CategoryID,
grpRow.Key.CategoryName,
I = grpRow.Count()
};
18
10/14/2019
Phé p gom nhó m (tt)
Lambda Syntax:
var query = Products.Join(
Categories,
p => p.CategoryID,
c => c.CategoryID,
(p, c) => new { p, c.CategoryID, c.CategoryName
}
)
.GroupBy(c => new { c.CategoryID, c.CategoryName })
.Select(grpRow => new {
grpRow.Key.CategoryID,
grpRow.Key.CategoryName,
I = grpRow.Count()
}
);
Phé p gom nhó m (tt)
19
10/14/2019
Các hàm tạo dữ liệu
Range: tạo 1 dãy số nguyên liên tiếp
Các hàm tạo dữ liệu (tt)
Repeat: tạo 1 dãy số chỉ chứa duy nhất 1 giá trị
Empty: tạo 1 dãy số có 0 phần tử
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình ứng dụng quản lý - Tuần 7: LINQ cơ bản (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_ung_dung_quan_ly_1_tuan_7_linq_co_ban_ph.pdf

