1. Định nghĩa
Linq là một query language được dùng để truy vấn dữ liệu từ các nguồn dữ liệu khác nhau (data sources).
Ví dụ:
- Ta có data source là một object collection như List<T> hoặc một Array
2. Mệnh đề trong linq
-
Trong câu query sẽ có 3 mệnh đề (clause) from, where, select tương tự như khi viết query trong database.
- from: nguồn lấy dữ liệu (data source)
- where: điều kiện để lọc dữ liệu. (filter data)
- select: lấy kết quả
3. Các cách để viết query linq
- Query Syntax khá giống cách viết câu query trong SQL.
- Method Syntax sử dụng các hàm hỗ trợ linq của c# .net.
4. Lambda Expressions trong LINQ
-
lambda expressions được dùng để tạo ra một function ẩn danh (anonymous function).
-
productId => productId % 2 == 0 là một biểu thức lambda (Lambda expression) với productId là tham số đầu vào (input parameter) của function ẩn danh.
Ví dụ lấy ra productName từ product id:
5. Sorting: OrderBy, OrderByDecending
6. Tạo ra 1 object mới trong Select
7. Grouping: GroupBy
8. All, Any
- All xác định tất cả phần tử thỏa một điều kiện hay không
- Any xác định tồn tại bất kỳ phần tử thỏa một điều kiện cụ thể hay không.
9. Element: First, FirstOrDefault, Single, SingleOrDefault
- First() Lấy ra phần tử đầu tiên thỏa 1 điều kiện. Nếu không tìm thấy sẽ throw exception
- FirstOrDefault() tương tự như First() trong trường hợp không có phần tử thỏa điều kiện sẽ trả về null cho kiểu tham chiếu và giá trị default cho kiểu tham trị.
- Single() trả về một phần tử trong danh sách thỏa điều kiện. Nếu không có phần tử nào hoặc tìm thấy hơn 1 phần tử sẽ throw exception
- SingleOrDefault() tương tự như Single() nhưng nếu không có phần tử nào sẽ trả về null cho kiểu tham chiếu và giá trị default cho kiểu tham trị. Throw exception nếu kết quả nhiều hơn 1 phần tử.
10. Partitioning: Skip, Take
- Skip(number) bỏ qua số lượng phần tử trong danh sách và trả về các phần tử còn lại.
- Take(number) trả về danh sách phần tử theo số lượng tham số number truyền vào tính từ phần tử đầu tiên.
11. Một số hàm phổ biến trong Linq
- Count(): đếm số phần tử của danh sách
- Average(): tính trung bình
- Max(): lấy ra giá trị lớn nhất
- Min(): lấy ra giá trị nhỏ nhất
- Sum(): tính tổng các phần tử
- First(): lấy ra phần tử đầu tiên
- Last(): lấy ra phần tử cuối cùng ….
- ToArray(): chuyển danh sách thành array. (ví dụ từ kiểu List sang Array)
- ToList(): chuyển danh sách thành List. (ví dụ từ kiểu Array sang List)
12. Bài tập
- Cho danh sách như trên. Viết các câu lệnh linq thỏa mãn:
- Lấy ra học sinh có id = 4
- Lấy ra danh sách học sinh có tên chứa ‘am’ và sống ở thành phố ‘CA’
- Lấy ra tên học sinh có điểm cao nhất
- Kiểm tra tất cả học sinh có điểm > 50 không. Nếu lớn hơn thì in ra dòng chữ “Pass”. Không thì in ra dòng chữ “Fail”