1 / 76

Chapter 5

Chapter 5. Truy xuất dữ liệu với LINQ. NỘI DUNG. Biến cục bộ kiểu ngầm định (Implicitly Typed Local Variables) Lớp / Kiểu “ tạm thời ” (Anonymous types) Phương thức mở rộng (Extension Methods) Biểu thức Lambda (Lambda Expressions) Truy cập dữ liệu với LINQ.

Download Presentation

Chapter 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 5 Truyxuấtdữliệuvới LINQ

  2. NỘI DUNG • Biếncụcbộkiểungầmđịnh (Implicitly Typed Local Variables) • Lớp/Kiểu “tạmthời” (Anonymous types) • Phươngthứcmởrộng (Extension Methods) • Biểuthức Lambda (Lambda Expressions) • Truycậpdữliệuvới LINQ

  3. BIẾN CỤC BỘ KIỂU NGẦM ĐỊNH • Côngdụng: • Khaibáocácbiếndùngtạm • Khaibáobiếnlưukếtquảtrảvềcủa LINQ (trongnhữngtrườnghợpta kg biếttrướckiểudữliệutrảvề) • Khaibáo: dùngtừkhóavar • Vídụ: • vari=32;// saukhikhaibáophảikhởitạogiátrịngay • varintArr = new[] { 1, 2, 3, 4 };

  4. BIẾN CỤC BỘ KIỂU NGẦM ĐỊNH • Đặcđiểm: Strongly Typed Data • Giátrịkhởitạophảithuộcmộtkiểudữliệu: • var d = new[] { 1, "one", 2, "two", false } // Error! Mixed types!: • Khôngthểgánlạimộtgiátrịkhôngcùngkiểuvớigiátrịtrước • var s = "This variable can only hold string data!"; • s = "This is fine...";// ok • s = 44; // Error! • Khôngnênlạmdụngvarđểkhaibáobiếncụcbộ, cóthểgâykhóhiểu, nhầmlẫnvàkhó debug. • ;

  5. LỚP/KIỂU TẠM THỜI • Côngdụng: chophéptạoracác class dùngtạmthờimàkhôngcầnphảiđịnhnghĩa class đótrước. • Đặcđiểm: • Khôngchứaphươngthức, sựkiện • Sửdụngcụcbộtrongmộtứngdụng • TấtcảthuộctínhlàReadonly, vìvậysaukhikhởitạothìkhôngthểsửađổi • Dùngvarđểkhaibáo

  6. LỚP/KIỂU TẠM THỜI • Vídụ:

  7. PHƯƠNG THỨC MỞ RỘNG (Chapter 13 Pro) • Côngdụng: cho phép “thêm” phươngthứcvào một lớp hiện có mà không cần thừa kế, biên dịch lại, hoặc sửa đổi mã nguồn gốc. • Sửdụngphổbiếntrong LINQ • Đặcđiểm: • Hàm cần thêm vào phải là hàm static • Hàm cần thêm vào phải đặt trong mộtlớpstatic

  8. PHƯƠNG THỨC MỞ RỘNG • Đặcđiểm: • Kiểu dữ liệu của tham số đầu tiên sẽ tương ứng với kiểu dữ liệu cần thêm vào. • Từ khoá this phải đặt ở tham số đầu tiên • Để sử dụng, thì class chứacácphươngthứcmởrộngphải visible trong ngữcảnh cần sử dụng (dùng using…)

  9. PHƯƠNG THỨC MỞ RỘNG • Vídụ:

  10. PHƯƠNG THỨC MỞ RỘNG • Khihaiphươngthứcmởrộngcócùngdấuhiệu (signature), thìcácphươngthứcphảiđượcgọithựchiệntheocáchgọithựchiệnmộtphươngthức static

  11. PHƯƠNG THỨC MỞ RỘNG • Khihaiphươngthứcmởrộngcócùngdấuhiệu (signature), thìcácphươngthứcphảiđượcgọithựchiệntheocáchgọithựchiệnmộtphươngthức static

  12. BIỂU THỨC LAMBDA • Làmột executable expression • Cóthểchuyển sang expression tree • Sửdụngthuậnlợihơnphươngthứcnặcdanh. • Nơinàocó Delegate vàphươngthứcnặcdanhthìcóthểdùngbiểuthức Lambda • Vídụ:

  13. BIỂU THỨC LAMBDA • Cúpháp: • ([parameter list]) => statements; • parameter list: danhsáchcácthamsốtruyềnvào (luônđượcxemlàtham tri) • Vídụ: In cácphầntửcủamảngramànhình

  14. BIỂU THỨC LAMBDA • Vídụ: Viếtbiểuthứctính (x+2)^y • delegateintdel(int i, int j); • staticdel doIt = (x, y) => { x = x + 2; • returnConvert.ToInt32(Math.Pow(x, y));}; • int j = doIt(5, 2); • Có nghĩa? • doIt thay thế tên hàm  khi gọi • doIt(5,2) • delegateintdel1(int i); • staticdel1 doIt1 = (x) => { ?? Tự viết}; • int j = doIt1(5); • Có thể rút gọn staticdel1 doIt1 = x vì có 1 tham số.

  15. BIỂU THỨC LAMBDA • Vídụ: Đoạn code bêndướilàmgì?

  16. BIỂU THỨC LAMBDA • Tậphợpcác Fun<> delegate của.Net Framework Class Library (FCL): • Func<TResult> • Func<T, TResult> • Func<T1, T2, TResult> • Func<T1, T2, T3, TResult> • Func<T1, T2, T3, T4, TResult> • Ý nghĩacácthamsố: • T, T1, T2.. : Generic parameter type (Kiểudữliệucủacácthamsốđầuvào) • TResult: kiểudữliệutrảvềcủa delegate

  17. BIỂU THỨC LAMBDA • Vídụ: Sửdụng Lambda Expression đểmãhóamộtchuỗi:

  18. BIỂU THỨC LAMBDA • Vídụ: Sửdụng Lambda Expression đểmãhóamộtchuỗi: string cryptText = EncryptString(“IBM”, 1, encryptAlgorithm);

  19. BIỂU THỨC LAMBDA • Biểuthức Lambda cóthểsửdụngcácbiếncụcbộ, thamsốcủaphươngthứcđãđịnhnghĩanó.

  20. TRUY CẬP DỮ LIỆU VỚI LINQ • Data has become more complex, with an ever-increasing number of systems and libraries for accessing those systems. • Developer must learn how to use a multitude of libraries to figure out how to access this data • We have ADO.NET, which is broken down into multiple providers (ODBC, OleDB, SQL, Oracle, and so on)

  21. TRUY CẬP DỮ LIỆU VỚI LINQ • Truyvấndữliệutừcácnguồndữliệutheomôhìnhhướngđốitượngbằngchínhngônngữlậptrình (khônglệthuộcngônngữcủahệquảntrị CSDL) • Truyvấndữliệucácmảng, tậphợp, XML.. • Cáclớphỗtrợ LINQ thuộccáckhônggiantên:System.Linq, System.Linq.Expressions

  22. TRUY CẬP DỮ LIỆU VỚI LINQ • Lậptrìnhtruyvấndữliệutheophươngpháptruyềnthống tiềmẩnnhiềulỗi

  23. TRUY CẬP DỮ LIỆU VỚI LINQ • Mụctiêuthiếtkếcủa LINQ: • Thốngnhấtcúphápngônngữtruyvấntrêncácloạidữliệu (objects, relational data, XML) • Truyvấndữliệubằngngônngữlậptrình • Hạnchếlỗi (pháthiệnlỗi ở thờiđiểmbiêndịch)

  24. TRUY CẬP DỮ LIỆU VỚI LINQ • Mụctiêuthiếtkếcủa LINQ: • Hổtrợngườilậptrìnhkhiviếtcáccâutruyvấn(IntelliSense support) • Hỗtrợgởrối (debug) • Tươngthíchhoàntoànvớinhữngcôngnghệkhác (standard and generic collections, data binding, web and Windows Forms controls)

  25. TRUY CẬP DỮ LIỆU VỚI LINQ • LINQ providers:

  26. TRUY CẬP DỮ LIỆU VỚI LINQ • Cácthànhphầncơbảncủa LINQ: • Sequences:Cácđốitượngđãhiệnthực interface IEnumerable<T> (Array, List..) • Elements: Cácphầntửtrong sequence

  27. TRUY CẬP DỮ LIỆU VỚI LINQ • Cácthànhphầncơbảncủa LINQ: • Query Operators:cácphươngthứcmởrộngthựchiệncácthaotáctrêncâulệnh LINQ(trongSystem.linq.Enumerablecókhoảng 40 operators) • Query Expression: Ngônngữtruyvấntíchhợpchophépthựchiệncáctruyvấntrêndữliệu

  28. TRUY CẬP DỮ LIỆU VỚI LINQ • Vídụ: • Query Operators: • Query Expression:

  29. TRUY CẬP DỮ LIỆU VỚI LINQ • Lưu ý: Mộtsốtoántửtrong Query Operators khôngđượchỗtrợtrong Query expression, vìvậytrongmộtsốtrườnghợptaphảigọitrựctiếpcác Query Operators

  30. TRUY CẬP DỮ LIỆU VỚI LINQ • Danhsáchcáctoántửchuẩn (standard operators):

  31. TRUY CẬP DỮ LIỆU VỚI LINQ • Danhsáchcáctoántửchuẩn:

  32. TRUY CẬP DỮ LIỆU VỚI LINQ • Danhsáchcáctoántử:

  33. LINQ và ĐỐI TƯỢNG (OBJECT) • Cúphápcơbản: giốngnhư SQL, LINQ cũngcócáclệnhfrom, where, select, join, group by, vàorder by

  34. LINQ và ĐỐI TƯỢNG (OBJECT) • Cúpháp Query Expression:

  35. LINQ và ĐỐI TƯỢNG (OBJECT) • Filter: Where • Query Operator: • Query Expression

  36. LINQ và ĐỐI TƯỢNG (OBJECT) • Indexed filtering:Toántử Where nhậnmộtthamsốthứ 2(optional) kiểu int. Thamsốnàychobiếtvị trí của phần tử trong sequense

  37. LINQ và ĐỐI TƯỢNG (OBJECT) • Filter: Contains

  38. LINQ và ĐỐI TƯỢNG (OBJECT) • Filter: Take, Skip • Take: Lấy n phầntửđầutiên • Skip: bỏ n phầntửđầutiên

  39. LINQ và ĐỐI TƯỢNG (OBJECT) • Filter: TakeWhile, SkipWhile • TakeWhile: Lấycácphầntửchođếnkhiđiềukiệnsai • SkipWhile: bỏ qua phầntửchođếnkhiđiềukiệnsaithìlấydữliệu

  40. LINQ và ĐỐI TƯỢNG (OBJECT) • Distinct: trảvềdãycácphầntửlấytừ sequence saukhiđãbỏcácphầntửtrùng

  41. LINQ và ĐỐI TƯỢNG – Data

  42. LINQ và ĐỐI TƯỢNG – ordering

  43. LINQ và ĐỐI TƯỢNG – grouping

  44. LINQ và ĐỐI TƯỢNG – join

  45. LINQ và ĐỐI TƯỢNG – join

  46. LINQ và ĐỐI TƯỢNG – Aggregate Operators

  47. LINQ và ĐỐI TƯỢNG – SelectMany SelectMany: Nốicácdãy con(subsequences) kếtquảthànhmộtdãy (sequence) Vídụ: Ta cómộtmảng Books[], mỗi book gồmcónhiềuthuộctính (XemSampleDatatrongLinqBooks.Common)

  48. LINQ và ĐỐI TƯỢNG – SelectMany Đểlấydanhsáchtêncáctácgiảcủacácquyểnsách:

  49. LINQ và ĐỐI TƯỢNG – SelectMany Vídụ:

  50. LINQ và SQL - DataContext • LINQ to SQL: chophéptruyvấndữliệuquảnlýbởi SQL SERVER • DataContext: Địnhnghĩacácthựcthể (Entities), từđótacóthểtruyvấndữliệu. • Cácthựcthể: • Ánhxạđếncácbảng quan hệ (Tables) • Chuyểnđổigiữacáccâulệnh LINQ vàcâulệnh SQL đểgửiđến CSDL

More Related