ĐỀ thêm một điều kiện lọc

Một phần của tài liệu Bài tiểu luận Đề tài tìm hiểu về linq (Trang 30 - 33)

V. LINQ và các kiểu có chung đặc điểm

4. Chuyển đổi dữ liệu với LINQ

9.3. ĐỀ thêm một điều kiện lọc

Bạn có thê kết hợp nhiều thuật ngữ logic trong mệnh dé where dé tinh chinh thém một truy vấn. Đoạn mã sau đây thêm một điều kiện đề truy vấn trả về những sinh viên có

điểm đầu tiên lớn hơn 90 và điểm kết thúc nhỏ hơn 80.

where student.Scores[0] > 90 && student.Scores[3] < 80 9.4. Chinh sia truy van:

Viéc quét két qua sé dé dang hon khi chúng nằm trong nhiều nhóm có các đặc điểm giống nhau. Bạn có thể sắp xếp các kết quả trả về bằng cách sử dụng một trong các thuộc tớnh của phần tử nguồn. Vớ dụ, mệnh đề ứrđerby sắp xộp sau đõy, kết quả được hiển thị theo thứ tự từ A đến Z dựa trên tên của từng sinh viên. Thêm mệnh đề orderby theo thứ tự sau vào truy vấn của bạn ngay sau câu lệnh where và trước cau lénh select:

orderby student.Last ascending

Thay déi ménh dé orderby ngay bay gid dé sap xép cac két qua tra về tăng dan cua điểm số dầu tiên trong mang điểm kiểm tra của mỗi sinh viên.

orderby student.Scores[0] descending

Thay đổi định dạng chuỗi được xuất ra màn hình để xem kết quả:

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D01 30

Tiểu luận cuối kỳ - LIK II Tìm hiểu về công nghệ LINQ Console.WriteLine("{0}, {1} {2}”, s.Last, s.Frrst, s.Šcores[0]);

9.5. ĐỀ nhóm các kết quả:

Nhóm là một cách tuyệt vời có thể được thực hiện trong một biểu thức truy vấn.

Một truy vấn với một tập hợp các mệnh đề sẽ khiến chúng được nhóm theo thử tự và mỗi nhóm sẽ chứa một khóa và chuỗi bao gồm tất cả các thành viên của nhóm đó. Tiếp theo là một truy vẫn mới nhóm các sinh viên bằng cách sử dụng các chữ cái đầu tiên trong tên của họ làm khóa.

⁄/ studentQuery2 is an IEnumerable<lGrouping<char, Student>>

var studentQuery2 = from student in students group student by student.Last [0];

9.6. To order the groups by their key value:

Nếu bạn chạy truy vấn trên, bạn thây rằng các nhóm không có thứ tự chữ cái. Để thay đổi nú, bạn phải bao gồm một mệnh đề ứrđerby theo thứ tự sau mệnh đề nhúm. Tuy nhiên, đề sử dụng mệnh đề orderby, trước tiên bạn phải có một định danh để sử dụng làm tham chiều đến các nhóm được tạo bởi mệnh đề nhóm. Chí định các số nhận dạng với từ khóa into nhu sau:

Khi bạn chạy truy vấn này, bạn sẽ thấy các nhóm đang được sắp xếp theo thứ tự chữ CẢI.

var studentQuery4 = from student in students

group student by student.Last[0] into studentGroup orderby studentGroup. Key

select studentGroup;

foreach (var groupOfStudents in studentQuery4) {

Console.WriteLine (groupOfStudents. Key);

foreach (var student in groupOfStudents) {

Console.WriteLine (" {O}, {1}", student.Last, student.First};

9.7. Để giới thiệu một định danh bằng cach sw dung let:

Bạn có thê sử dụng từ khóa /ef để tham chiêu đến số nhận dạng cho mỗi biéu thức được trả về trong biều thức truy vấn. Xử lý này có thê hữu ích, như trong ví dụ sau, hoặc nó có thê cải thiện hiệu suất bằng cách lưu vào bộ nhớ đệm các kết quả của một biểu thức

đề nó không phải tính toán nhiều lần.

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D01 31

Tiểu luận cuối kỳ - HK II Tìm hiệu về công nghệ LINQ

var studentQuery5 = from student in students

let totalScore = student.Scores[0] + student.Scores[1] + student.Scores[2] + student.Scores[3

where totalScore / 4 < student.Scores[0]

select student.Last + " " + student.First;

foreach (string s in studentQuery5) {

Console.WriteLine(s);

}

9.8. Để sử dụng củ pháp phương thức trong một biểu thức truy vẫn:

Như đã đề cập trong Phương thức và Cú pháp Truy van (LINQ), mét s6 thao tac truy vấn chỉ có thê được thê hiện bằng cách sử dụng cú pháp phương thức. Đoạn mã sau sẽ tính toán tổng điểm cho mỗi học sinh trong luồng nguồn và sau đó gọi phương thức Average () trên kết quả truy vấn đề tính điểm trung bình của các class.

Lưu ý vị trí của dấu ngoặc xung quanh biểu thức truy vấn.

var studentQuery6 = from student in students

let totalScore = student.Scores[0] + student.Scores[1] + student.Scores[2] + student.Scores[3]

select totalScore;

double averageScore = studentQuery6.Average ();

Console.WriteLine ("Class average score = {0}", averageScore);

9.9. Dé chuyén đổi hoặc dự án trong mệnh dé select:

Rat pho biến khi một truy vấn tạo ra một chuỗi các mục khác với các mục trong truy vấn.

trình tự nguồn. Xóa hoặc ghi chú truy vấn trước đó của bạn, chạy vòng lặp và thay thế nó bằng đoạn mã sau. Lưu ý rằng truy vấn trả về một chuỗi và điều này được phản ánh trong vòng lap foreach.

IEnumerable<string> studentQuery? = from student in students where student.Last == "Garcia"

select student.First;

Console.WriteLine("The Garcias in the class are:");

foreach (string s in studentQuery7) {

Console.WriteLine(s);

}

Mã được nhập trước đó trong walkthrough này cho biết rằng điểm trung bình là khoảng 334. Đề tạo ra một chuỗi Students có tông điểm cao hơn bình thường. Trung bình, bạn có thê sử dụng kiêu ân danh trong câu lệnh select cùng với Student ID:

var studentQuery8 = from student in students

let x = student.Scores[0] + student.Scores[1] + student.Scores[2] + student.Scores[3]

where x > averageScore

select new { id = student.ID, score = x };

foreach .{[var item, in studeat cya} 32

(Sinh viên thực hiện guyen Thi Bich Ngoc - DOL

Console.WriteLine ("Student ID: {0}, Score: {1}", item.id, item.score});

}

Một phần của tài liệu Bài tiểu luận Đề tài tìm hiểu về linq (Trang 30 - 33)

Tải bản đầy đủ (PDF)

(35 trang)