Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
1,41 MB
Nội dung
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 LINQ 11/14/2018 Nội dung Query syntax Lambda syntax Các phép truy vấn LINQ Query syntax Yêu cầu truy vấn from n in list where n < select n; foreach (int n in list) { if (n < 3) //xử lý n } 11/14/2018 Query syntax - let var list = new List { 1,2,3,4,5,6,7,8,9 }; var query = from n in list where n > && n < let g = n * let newList = new List {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] }; 11/14/2018 Query syntax – join Có ý nghĩa phép kết bảng sở 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; 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 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 }; 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) 11/14/2018 Query Syntax Các from viết lồng 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 LINQ 11/14/2018 Lambda Syntax Bản chất LINQ lệnh truy vấn viết dạng lambda syntax Query syntax dễ đọc, dễ hiểu so với lambda syntax Khi thực thi, query syntax compiler chuyển lambda sysntax Dùng lambda syntax tận dụng mạnh LINQ Lambda Syntax (tt) Các truy vấn LINQ viết query syntax hồn tồn biểu diễn dạng lambda syntax Khơng có chiều ngược lại Nên kết hợp query syntax & lambda syntax 11/14/2018 Nội dung Query syntax Lambda syntax Các phép truy vấn LINQ Danh sách phép toán 11/14/2018 Danh sách phép toán (tt) Phép chọn Where: giữ lại phần tử thoả điều kiện Query Syntax var query = from n in list where n < select n; Lambda Syntax var query = list.Where(n => n < 3); 10 11/14/2018 Các hàm tạo liệu (tt) Any Dùng để kiểm tra dãy có rỗng hay khơng? Các hàm tạo liệu (tt) Any Dùng để kiểm tra dãy có chứa phần tử thoả điều kiện X hay không? 21 11/14/2018 Các hàm tạo liệu (tt) All Dùng để kiểm tra dãy có phải tất phần tử dãy thoả điều kiện X hay không? Các hàm phân hoạch liệu Take: lấy n phần tử dãy Skip: bỏ qua n phần tử dãy, lấy từ phần tử thứ (n+1) 22 11/14/2018 Các hàm phân hoạch liệu (tt) TakeWhile: lấy phần tử đầu thoả điều kiện 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 SkipWhile: bỏ phần tử đầu thoả điều kiện Các hàm truy xuất phần tử First: lấy phần tử dãy, “thảy” InvalidOperationException dãy rỗng 23 11/14/2018 Các hàm truy xuất phần tử First: lấy phần tử dãy, “thảy” InvalidOperationException dãy rỗng Các hàm truy xuất phần tử (tt) FirstOrDefault: tương tự First trả null & ko “thảy” exception dãy rỗng Last, LastOrDefault 24 11/14/2018 Các hàm truy xuất phần tử (tt) Single: Trả item dãy có phần tử “Thảy” exception dãy có nhiều phần tử Dùng Single để ép dãy có phần tử đối tượng cụ thể Các hàm truy xuất phần tử (tt) Single: 25 11/14/2018 Các hàm truy xuất phần tử (tt) First trả phần tử dãy có >=1 phần tử Single ép dãy có phần tử thành kiểu đối tượng cụ thể Khi dùng Single ta hàm ý việc kiểm tra xem dãy có chứa nhiều phần tử hay khơng? Take(1) trả dãy có phần tử lấy từ dãy gốc Các hàm truy xuất phần tử (tt) ElementAt: lấy phần tử thứ i dãy 26 11/14/2018 DefaultIfEmpty Khi kết truy vấn dãy phần tử, DefaultIfEmpty tạo phần tử mặc định cho dãy NULL (Kết dãy có phần tử, phần tử = null) DefaultIfEmpty (tt) Tự định nghĩa phần tử mặc định 27 11/14/2018 Các hàm xử lý tập hợp Union: kết hợp dãy kiểu liệu lại & loại bỏ phần tử trùng { 1, 2, 3, 4, 5, } Các hàm xử lý tập hợp (tt) Concat: kết hợp dãy kiểu liệu lại & không loại bỏ phần tử trùng { 1, 2, 3, 3, 4, 5, } 28 11/14/2018 Các hàm xử lý tập hợp (tt) Distinct: loại bỏ phần tử trùng dãy Các hàm xử lý tập hợp (tt) Intersect: lấy phần giao dãy có kiểu liệu 29 11/14/2018 Các hàm xử lý tập hợp (tt) Except: lấy phần tử thuộc dãy & không chứa phần giao dãy Các hàm xử lý thống kê Count: trả số lượng phần tử có dãy Có thể định điều kiện Count 30 11/14/2018 Các hàm xử lý thống kê (tt) Min, Max: trả phần tử nhỏ nhất, lớn dãy Có thể định thuộc tính để lấy min, max double maxPrice = Products.Max(p => p.UnitPrice) Các hàm xử lý thống kê (tt) Average: tính giá trị trung bình dãy Có thể định thuộc tính để tính trung bình 31 11/14/2018 Các hàm xử lý thống kê (tt) Sum: tính tổng dãy Có thể định thuộc tính để tính tổng Các hàm chuyển kiểu liệu ToList, ToArray: chuyển kết truy vấn sang List, Array 32 11/14/2018 Các hàm chuyển kiểu liệu (tt) ToDictionary: chuyển kết truy vấn sang Dictionary, dùng hàm cần định thuộc tính KEY cho Dictionary Các hàm chuyển kiểu liệu (tt) OfType: lấy phần tử thuộc kiểu liệu dãy “That”, “This” 33 11/14/2018 Luyện tập Query Tìm tất phần tử