Tải bản đầy đủ (.pptx) (19 trang)

Tai lieu LINQ ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.81 MB, 19 trang )

ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN LT WIN
ĐỀ TÀI TÌM HIỂU LINQ

ĐOÀN THÁI TỚI: 0863163

QUÂN: 07….
NHÓM THỰC HIỆN
1> LINQ là gì ? - Khái niệm LINQ & MỤC ĐÍCH

Data Structure and Algorithm – Cấu trúc dữ liệu và giải thuật

Relational Database Management System, SQL- Cơ sở dữ liệu quan hệ

Object Oriented Programming – lập trình hướng đối tượng

Desgn Pattern – kiểu mẫu thiết kế cho OOP

Và XML – ngôn ngữ đánh dấu mở rộng

LINQ là một tập hợp các thành phần mở rộng cho phép viết các câu truy vấn dữ liệu ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET.

Thay vì thêm hàm truy vấn riêng biệt cho CSDL quan hệ, rồi .NET collection, hàm gọi Xpath để truy vấn XML, tại sao chúng ta không tìm một giải pháp chung
để truy vấn các nguồn dữ liệu khác nhau?

Trước đây với những ứng dụng đa tầng, nội dung dữ liệu là như nhau nhưng ở những tầng khác nhau, data tier, middle tier, chúng được lưu giữ ở dạng khác nhau,
table ở data tier, .NET collection, data set ở middle tire. Điều này khiến cho việc truy vấn ở mỗi tầng phải có kỹ thuật, cú pháp lập trình khác nhau

Bên Java có Hibernate thì LINQ cũng tương tự như vậy, nó đưa ra khả năng lập trình mới trong .NET kiểu truy vấn :Sql DB, Objects và Xml
Giải pháp lập trình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp SQL trực tiếp trong C# hay VB.NET, áp dụng cho tất cả các dạng dữ liệu từ đối tượng


đến CSDL quan hệ và XML. Xử lý thông tin hay dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và một trong những trở ngại chính mà các nhà phát
triển hiện nay phải đối mặt là khác biệt giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đề càng phức tạp hơn với sự xuất hiện của XML
(eXtensible Markup Language - ngôn ngữ đánh dấu mở rộng).


Hiện tại, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ liệu (CSDL) là sử dụng SQL (Structure Query Language -
ngôn ngữ truy vấn cấu trúc). SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# và VB.NET, do vậy lập
trình viên phải nhọc công "hàn gắn" hai thực thể khác biệt này với nhau trong mỗi dự án phần mềm.
Một vấn đề khác với SQL là nó chỉ dùng để truy vấn dữ liệu trong các CSDL dạng quan hệ. Nếu muốn truy cập dữ liệu XML hay
dạng khác (như trang HTML, email ), nhà phát triển lại phải sử dụng cú pháp truy vấn khác (XPath/XQuery).

Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện năng suất lập trình, Microsoft đã phát triển giải
pháp tích hợp dữ liệu cho .NET Framework có tên gọi là LINQ (Language Integrated Query), đây là thư viện mở rộng cho
các ngôn ngữ lập trình C# và Visual Basic.NET (có thể mở rộng cho các ngôn ngữ khác) cung cấp khả năng truy vấn trực
tiếp dữ liệu Object, CSDL và XML.
1> LINQ là gì ? - Khái niệm LINQ & MỤC ĐÍCH
2. CÁC THÀNH PHẦN LINQ CUNG CẤP
XU HƯỚNG PHẦN MỀN: PHÂN TÁN HƠN, HƯỚNG DỊCH VỤ HƠN
Dữ liệu được trung chuyển qua nhiều tầng, trao đổi qua các dịch vụ, lấy từ nhiều nguồn. Nếu không có một phương pháp truy vấn tổng quát,
lập trình viên phải làm việc nhiều hơn, debug nhiều hơn, học nhiều hơn, copy paste nhiều hơn để cho ra sản phẩm không dễ dàng bảo quản,
kiểu như lập trình giao diện bằng Assamply
2. CÁC THÀNH PHẦN LINQ CUNG CẤP

LINQPad cho phép bạn tác động vấn tin các cơ sở dử liệu SQL với 1 ngôn ngữ hiện đại là: LINQ. Nói lời tạm biệt tới SQL
Management Studio. LINQPad hổ trợ mọi thứ trên C# 3.0 và Framewrok 3.5 chẳn hạn như :
1. LINQ to Objects
2. LINQ To XML
3. LINQ to Dataset
4. LINQ To Entities
5. LINQ to SQL


Với LINQ bạn không những có thể truy vấn cơ sở dữ liệu mà bạn còn có thể truy vấn các Collections, ADO.NET Datasets,
XML Documents, string, và các nguồn dữ liệu khác miễn là chúng thực thi giao diện IEnumrable hoặc IEnumrable<T>
3. TRUY VẤN CỦA LINQ, CÁC TOÁN TỬ VÀ VD TRUY VẤN

LINQ hỗ trợ loại dữ liệu IEnumerable <T>. Những đối tượng hỗ trợ IEnumerable <T> và IQueryable(T) được gọi là
queryable.

Có 3 phần của biểu thức LINQ
1. Có được các dữ liệu nguồn.
2. Tạo các truy vấn.
3. Thực hiện các truy vấn.
Kết quả trả về của LINQ người ta gọi là sequence.Hầu hết sequence là IEnumerable<T> với T là KDL của những đối tượng
trong sequence. LINQ nó sẽ cung cấp cách duy nhất để truy cập dữ liệu từ bất kể nguồn dữ liệu nào với cú pháp giống nhau.
3. TRUY VẤN CỦA LINQ, CÁC TOÁN TỬ VÀ VD TRUY VẤN
3. TRUY VẤN CỦA LINQ, CÁC TOÁN TỬ VÀ VD TRUY VẤN
Vd:
class IntroToLINQ
{ static void Main()
{
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; // 1. Nguồn dữ liệu.
var numQuery = from num in numbers
where (num % 2) == 0
select num; // 2. Câu truy vấn
foreach (int num in numQuery) // 3. Thực hiện câu truy vấn
{
Console.Write("{0,1} ", num);
}
}
}

Vd:
class IntroToLINQ
{ static void Main()
{
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 }; // 1. Nguồn dữ liệu.
var numQuery = from num in numbers
where (num % 2) == 0
select num; // 2. Câu truy vấn
foreach (int num in numQuery) // 3. Thực hiện câu truy vấn
{
Console.Write("{0,1} ", num);
}
}
}
3. TRUY VẤN CỦA LINQ, CÁC TOÁN TỬ VÀ VD TRUY VẤN
1.Select / SelectMany 11. Reverse
2. Sum /Min/Max/Average 12. Any / All / Contains
3.GroupBy 13. Skip / SkipWhile
4. Where 14. Concat
5. Join / GroupJoin 15. Count
6. EqualAll 16. Union / Intersect /Except
7. ElementAt 17. Sum /Min/Max/Average Aggregate
8. OrderBy / ThenBy 18. First /FirstOrDefault /Last LastOrDefault
9. Distinct 19. OfType
10. Single
4. ỨNG DỤNG LANQ
LINQ to Entity: là một LINQ API khác để giao tiếp với cơ sở dữ liệu. So với LINQ to SQL, LINQ to Entity mang nhiều tham
vọng hơn, mạnh mẽ hơn nhưng cũng phức tạp hơn. Hiện tại, LINQ to Entity chưa hoàn thiện như LINQ to SQL
4.2 Linq To Entities
VD:

using(var data = new LinqToEntities())
{
var names = new[] { “A”, “B”, “C”};
for(int i = 0; i < names.lenght; i + +)
{
var customers = from k in data.Customers
where k.names = names[i];
select k;
}
}
VD:
using(var data = new LinqToEntities())
{
var names = new[] { “A”, “B”, “C”};
for(int i = 0; i < names.lenght; i + +)
{
var customers = from k in data.Customers
where k.names = names[i];
select k;
}
}
4. ỨNG DỤNG LANQ
LINQ to Objects : Cho phép chúng ta có thể truy vấn các Objects trong một Collection, các kiểu đối tượng này phải
thực thi giao diện Enumrable hoặc IEnumrable<T>
4.1. Lanq To Objects
VD:
int[] numbers = new int[] {1,2,3};
int result = numbers.sum();
console.writeline(result);
Ket qua xuat ra: 6

VD:
int[] numbers = new int[] {1,2,3};
int result = numbers.sum();
console.writeline(result);
Ket qua xuat ra: 6
LINQ to Datasets : Cho phép bạn có thể truy vấn các Dataset hoặc DataTable
4. ỨNG DỤNG LANQ
DataTable orders = ds.Tables["SalesOrderHeader"];
var ordersQuery = orders.ToQueryable();
var query = from K in ordersQuery
where K.Field<bool>("OnlineOrderFlag") == true
select new { SalesOrderID = K.Field<int>("SalesOrderID"),
OrderDate = K.Field<DateTime>("OrderDate") };
DataTable orders = ds.Tables["SalesOrderHeader"];
var ordersQuery = orders.ToQueryable();
var query = from K in ordersQuery
where K.Field<bool>("OnlineOrderFlag") == true
select new { SalesOrderID = K.Field<int>("SalesOrderID"),
OrderDate = K.Field<DateTime>("OrderDate") };
4.3 Linq to Datasets
LINQ to XML là một cách mới để xây dựng, viết và đọc dữ liệu XML trong các ngôn ngữ NET
4. ỨNG DỤNG LANQ
4.4 Linq to XML
VD:
XDocument loaded = XDocument.Load(@"C:\contacts.xml");
var A = from B in loaded.Descendants("contact")
where (int)B.Attribute("contactId") < 4
select (string)B.Element("firstName") + “ “ + (string)B.Element("lastName");
foreach (string name in A)
Console.WriteLine(“Ten = {0}", name);

Ket qua xuat ra: Ten = Barney Gottshall
Ten = Armando Valdes
VD:
XDocument loaded = XDocument.Load(@"C:\contacts.xml");
var A = from B in loaded.Descendants("contact")
where (int)B.Attribute("contactId") < 4
select (string)B.Element("firstName") + “ “ + (string)B.Element("lastName");
foreach (string name in A)
Console.WriteLine(“Ten = {0}", name);
Ket qua xuat ra: Ten = Barney Gottshall
Ten = Armando Valdes

LINQ To SQL cho phép mô hình cơ sở dữ liệu mối quan hệ bằng các lớp
Sau đó chúng ta có thể truy vấn dữ liệu (update/insert/delete…) thông qua các lớp đó

Giống như cơ sở dữ liệu SQL, LINQ To SQL có hỗ trợ transactions, views, and stored procedures

LINQ To SQL cung cấp cơ chế để cho lập trình viên thêm vào các phương thức để xác nhận tính hợp lệ của dữ liệu (data
validation)

Ngoài ra, LINQ To SQL cung cấp cơ chế để cho lập trình viên dễ dàng thêm vào các thao tác tính toán, truy vấn cơ sở dữ liệu, để
truy vấn dữ liệu phù hợp với nhu cầu của từng loại hệ thống phần mềm
4. ỨNG DỤNG LANQ
4.4 Linq to SQL
NorthwindDataContext db= new NorthwindDataContext()
Var products = from nhom13 in db.products
where k.Category.CategoryName == “Beverages”
select nhom13;
NorthwindDataContext db= new NorthwindDataContext()
Var products = from nhom13 in db.products

where k.Category.CategoryName == “Beverages”
select nhom13;
4. ỨNG DỤNG LANQ
4.4 Linq to SQL
4.4.1 Lấy các Product từ CSDL
NorthwindDataContext db= new NorthwindDataContext()
Products = db.products.Single(nhom13 => nhom13.ProductName == “Ten”;
Product.UnitPrice = 99;
Product.UnitsInStock = 5;
Db.SubmitChanges();
NorthwindDataContext db= new NorthwindDataContext()
Products = db.products.Single(nhom13 => nhom13.ProductName == “Ten”;
Product.UnitPrice = 99;
Product.UnitsInStock = 5;
Db.SubmitChanges();
4. ỨNG DỤNG LANQ
4.4 Linq to SQL
4.4.2 Cập nhật 1 sản phẩm
NorthwindDataContext db = new NorthwindDataContext()
Category category = new Category();
Category.CategoryName = “ Scott’s Tens”;
Product product1 = new product();
Product1.ProductName = “Ten 1”;
Product product1 = new product();
Product1.ProductName = “Ten 2”;
Category.Products.add(Product1);
Category.Products.add(Product2);
db.Categories.Add(Category)
db.Submitchanges();
NorthwindDataContext db = new NorthwindDataContext()

Category category = new Category();
Category.CategoryName = “ Scott’s Tens”;
Product product1 = new product();
Product1.ProductName = “Ten 1”;
Product product1 = new product();
Product1.ProductName = “Ten 2”;
Category.Products.add(Product1);
Category.Products.add(Product2);
db.Categories.Add(Category)
db.Submitchanges();
4. ỨNG DỤNG LANQ
4.4 Linq to SQL
4.4.3 Chèn thêm phân loại và thêm mới sản phẩm
NorthwindDataContext db = new NorthwindDataContext()
Var TenProducts = from nhom13 in db.Products
where nhom13.ProductName.Contains(“Ten”)
select nhom13;
db.Products.RemoveAll(TenProducts);
db.Submitchanges();
NorthwindDataContext db = new NorthwindDataContext()
Var TenProducts = from nhom13 in db.Products
where nhom13.ProductName.Contains(“Ten”)
select nhom13;
db.Products.RemoveAll(TenProducts);
db.Submitchanges();
4. ỨNG DỤNG LANQ
4.4 Linq to SQL
4.4.4 Xóa các sản phẩm
5. Chốt lại
LINQ là một trong những tính năng cốt lõi của .NET Framework, được hỗ trợ đầy đủ trong

các ngôn ngữ C# và VB. LINQ hiện có một dải rộng các ứng dụng tiềm năng. Nói một cách
đơn giản, nó cung cấp một mô hình mang tính khai báo cho việc nhận và xử lý dữ liệu cho
phép ta sử dụng cùng một cú pháp với nhiều nguồn dữ liệu khác nhau.
LINQ là một trong những tính năng cốt lõi của .NET Framework, được hỗ trợ đầy đủ trong
các ngôn ngữ C# và VB. LINQ hiện có một dải rộng các ứng dụng tiềm năng. Nói một cách
đơn giản, nó cung cấp một mô hình mang tính khai báo cho việc nhận và xử lý dữ liệu cho
phép ta sử dụng cùng một cú pháp với nhiều nguồn dữ liệu khác nhau.
GOOD LUCK TO YOU !

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×