Bài giảng Lập trình Ứng dụng quản lý - Tuần 11: LINQ (Phần 2)

11/14/2018  
Lập trình Ứng dụng quản lý  
C#.NET  
LINQ (tt)  
Nội dung  
Query syntax  
Lambda syntax  
Các phép truy vấn trên LINQ  
1
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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
11/14/2018  
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  
11/14/2018  
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  
11/14/2018  
Phép chiếu SelectMany  
SelectMany: dùng “phẳng hoá” tập hợp  
Phép chiếu SelectMany (tt)  
12  
11/14/2018  
Phép chiếu SelectMany (tt)  
Phép chiếu SelectMany (tt)  
13  
11/14/2018  
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  
11/14/2018  
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  
11/14/2018  
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  
11/14/2018  
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  
11/14/2018  
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  
11/14/2018  
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  
11/14/2018  
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 đủ
pdf 35 trang myanh 28060 Free
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 11: LINQ (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:

  • pdfbai_giang_lap_trinh_ung_dung_quan_ly_tuan_11_linq_phan_2.pdf