
Trung Tâm Tin H cọĐi h c Khoa H c T Nhiên Tp.HCMạ ọ ọ ự
H ng D n Th c Hànhướ ẫ ự
LINQ
Kh i: Đi H c và Cao Đngố ạ ọ ẳ
Năm 2015
H ng d n:ướ ẫ
Bài t p th c hành đc chia theo Moduleậ ự ượ
M i Module đc thi t k cho th i l ng là 3ỗ ượ ế ế ờ ượ 6 ti t th c hành t i l p v iế ự ạ ớ ớ
s h ng d n c a gi ng viên.ự ướ ẫ ủ ả
Tùy theo s ti t phân b , m i tu n h c có th th c hi n nhi u Module.ố ế ổ ỗ ầ ọ ể ự ệ ề
Sinh viên ph i làm t t c các bài t p trong các Module tu n t ng ng.ả ấ ả ậ ở ầ ươ ứ
Nh ng sinh viên ch a hòan t t ph n bài t p t i l p có trách nhi m t làmữ ư ấ ầ ậ ạ ớ ệ ự
ti p t c nhà.ế ụ ở
Các bài có d u (*) là các bài t p nâng cao dành cho sinh viên khá gi i.ấ ậ ỏ

Trung Tâm Tin H cọĐi h c Khoa H c T Nhiên Tp.HCMạ ọ ọ ự
Truy su t d li u v i LINQấ ữ ệ ớ
N i dung ki n th c th c hành:ộ ế ứ ự
-Th c hành LINQ:ự
-Hi u đc Genericể ượ
-Hi u đc Implicitly Typed Variablesể ượ
-Hi u đc Anonymous Typesể ượ
-Hi u đc Extension Methodsể ượ
-Hi u đc Lambda Expressionsể ượ
-Hi u đc LinQ to Objectể ượ
-Hi u đc LinQ to SQLể ượ
-Sinh viên có th t i toàn b ví d liên quan t i LINQ t trang chính th ng c a ể ả ộ ụ ớ ừ ố ủ
Microsoft đ tham kh o: ể ả http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
Bài t p 1:ậ
M c đích:ụ
-Hi u đc Genericể ượ
-Trong System.Collections.Generic; cung c p r t nhi u class: List, Dictionary, ấ ấ ề
SortedList, SortedDictionary, LinkedList, HashSet….
-Nh ng đây chúng ta ch quan tâm t i ư ở ỉ ớ List và Dictionary, các class khác sinh viên
ph i có trách nhi m t nghiên c u.ả ệ ự ứ
Yêu c u:ầ
-S d ng ử ụ List đ vi t ch ng trình nh bên d i:ể ế ươ ư ướ
- 2 -

Trung Tâm Tin H cọĐi h c Khoa H c T Nhiên Tp.HCMạ ọ ọ ự
-M i l n click “Nh p s ”: S đa s trong TextBox vào Listbox bên trái.ỗ ầ ậ ố ẽ ư ố
-Click “>>” s chuy n t t c các ph n t đang đc ch n trong ListBox bên trái sang ẽ ể ấ ả ầ ử ượ ọ
Listbox bên ph iả
-Click “<<” s chuy n t t c các ph n t đang đc ch n trong ListBox bên ph i sang ẽ ể ấ ả ầ ử ượ ọ ả
Listbox bên trái
-C i ti n l i ch ng trình: cho phép đa b t k ki u d li u nào vào Listbox (xem hình)ả ế ạ ươ ư ấ ỳ ể ữ ệ
H ng d n:ướ ẫ
-Thi t l p các ListBox có ch đ cho phép ch n nhi u ph n t : SelectionMode là ế ậ ế ộ ọ ề ầ ử
MultiSimple ho c ặMultiExtended.
-Đ List có th ch a b t k ki u d li u nào thì ta dùng List<ể ể ứ ấ ỳ ể ữ ệ object>. M i class sinh ra ọ
đu k th a t object, nên khi ta đ object thì nó s có th l u b t k ki u d li u nào.ề ế ừ ừ ể ẽ ể ư ấ ỳ ể ữ ệ
Bài t p 2:ậ
M c đích:ụ
-Hi u đc Genericể ượ
-Trong System.Collections.Generic; cung c p r t nhi u class: List, Dictionary, ấ ấ ề
SortedList, SortedDictionary, LinkedList, HashSet….
-Nh ng đây chúng ta ch quan tâm t i ư ở ỉ ớ List và Dictionary, các class khác sinh viên
ph i có trách nhi m t nghiên c u.ả ệ ự ứ
Yêu c u:ầ
-S d ng ử ụ Dictionary đ vi t ch ng trình nh bên d i:ể ế ươ ư ướ
- 3 -

Trung Tâm Tin H cọĐi h c Khoa H c T Nhiên Tp.HCMạ ọ ọ ự
-M i l n b m L u: Đa thông tin sinh viên vào Dictionary r i c p nh t lên ListView. N uỗ ầ ấ ư ư ồ ậ ậ ế
mã đã t n t i thì t đng c p nh t, n u mã ch a t n t i thì thêm m i.ồ ạ ự ộ ậ ậ ế ư ồ ạ ớ
-M i l n click vào t ng ph n t trong ListView thì hi n th thông tin chi ti t c a sinh viên ỗ ầ ừ ầ ử ể ị ế ủ
vào ph n Thông tin chi ti t ầ ế
-Nút Xóa: cho phép xóa sinh viên hi n t iệ ạ
-Chú ý là t t c các thao tác ph i s d ng Dictionary.ấ ả ả ử ụ
-Khi thao tác v i CSDL thì Dictionary là m t class r t h u hi u, c i ti n t c đ x lý.ớ ộ ấ ữ ệ ả ế ố ộ ử
H ng d n:ướ ẫ
-T o m t class tên là Sinhvienạ ộ
-Khai báo Dictionary nh sau: ư
Dictionary<string,sinhvien> dic = new Dictionary<string, sinhvien>();
V i đi s th nh t là key, đi s th 2 là valueớ ố ố ứ ấ ố ố ứ
-Ta có th đa d li u vào b ng ph ng th c dic.Add(“010203”,sinhvien nào đó)ể ư ữ ệ ằ ươ ứ
-Đ duy t toàn b các ph n t trong Dictionary có nhi u cách, đây ta th ng dùng:ể ệ ộ ầ ử ề ở ườ
foreach (KeyValuePair<string, sinhvien> item in dic)
{
sinhvien sv = item.Value;
}
- 4 -

Trung Tâm Tin H cọĐi h c Khoa H c T Nhiên Tp.HCMạ ọ ọ ự
-Đ l y sinh viên theo đúng mã ta ch c n: dic[“010203”]ể ấ ỉ ầ
-Đ xóa sinh viên ta làm nh sau: dic.Remove(“010203”);ể ư
Bài t p 3:ậ
M c đích:ụ
-Th c hành và hi u đc ự ể ượ Implicitly Typed Variables
Yêu c u:ầ
-Hãy khai báo và gán giá tr b t k cho m t bi n có ki u ị ấ ỳ ộ ế ể var
var x = 113;
var y = "1/1/2012";
var z = 1.7;
var k = new DateTime(2012, 1, 1);
string msg = "x type="+x.GetType() + "\n"+
"y type = "+y.GetType() + "\n" +
"z type ="+z.GetType() + "\n" +
"k type = " + k.GetType();
MessageBox.Show(msg);
-Hãy th tr ng h p không gán giá tr m c đnh cho bi n có ki u ử ườ ợ ị ặ ị ế ể var, cho nh n xétậ
-Hãy th gán giá tr có ki u d li u khác cho bi n đã khai báo ki u ử ị ể ữ ệ ế ể var, cho nh n xétậ
-Hãy cho bi t ếvar th ng đc ng d ng trong tr ng h p nào?ườ ượ ứ ụ ườ ợ
-Trong tr ng h p đã bi t chính xác ki u d li u thì có nên khai báo ki u ườ ợ ế ể ữ ệ ể var hay
không?
H ng d n:ướ ẫ
-var đc .net framework h tr c ch n i suy ki u d li uượ ỗ ợ ơ ế ộ ể ữ ệ
-do đó nó s t đng l y đúng ki u d li u khi ta gán vào cho nó.ẽ ự ộ ấ ể ữ ệ
-B t k ki u d li u nào, k c ki u object, var cũng t đng n i suy ra đúng ki u d ấ ỳ ể ữ ệ ể ả ể ự ộ ộ ể ữ
li u c a nó:ệ ủ
-var s=new sinhvien(); thì s cũng đc n i suy ra là đi t ng sinh viên, do đó ta có ượ ộ ố ượ
th s đc các Properties, method .. c a sinhvien m t Cách bình th ng.ể ử ượ ủ ộ ườ
- 5 -

