Trang chủ > Đọc chơi > Truy vấn dữ liệu với LinQ

Truy vấn dữ liệu với LinQ


Lấy mẫu tin đầu tiên trong bảng(Lấy sản phẩm đầu tiên trong bảng Products). Hai câu truy vấn sau đây trả về cùng kết quả.

var products = context.Products.FirstOrDefault();
var products = (from p in context.Products select p).Skip(0).Take(1); //Tương đương SELECT TOP 1 trong SQL

Lấy mẫu tin cuối cùng(Sản phẩm cuối cùng trong bảng Products).

var products = context.Products.LastOrDefault(); //LastOrDefault vẫn chưa đươc hỗ trợ trong .NET 3.5
var products = (from p in context.Products orderby p.ProductID descending
select p).Skip(0).Take(1);

Lấy sản phẩm cố định trong bảng Products.

Product products = context.Products.Single(p=>p.ProductID == 22);

Lấy 10 sản phẩm đầu tiên trong bảng Products.

var products = (from p in context.Products select p).Take(10);
//Tương đươngSELECT TOP 10 trong SQL

Lấy sản phẩm thứ 11 đến 20.

var products = (from p in context.Products select p).Skip(10).Take(10);

Lấy tất cả các sản phẩm trong bảng Products.

var products = from p in context.Products select p;
//Tương đương SELECT * trong SQL

Lấy các cột cố định trong bảng Products.

var products = from p in context.Products  select new 
{
p.ProductID,
p.ProductName,
p.UnitPrice,
p.UnitsInStock,
p.UnitsOnOrder
};

Thay đổi tiêu đề cột.

var products = from p in context.Products select new 
{
MaSanPham = p.ProductID,
TenSanPham =p.ProductName,
DonGia = p.UnitPrice,
SoLuong =p.UnitsInStock,
SoLuongBan = p.UnitsOnOrder
};//Tương đương Alias columns

Sắp xếp các cột trong kết quả trả về.

var products = from p in context.Products
orderby p.ProductID descending, p.ProductName//Tương đương ORDER BY trong SQL
select new 
{
p.ProductID,
p.ProductName,
p.UnitPrice,
p.UnitsInStock,
p.UnitsOnOrder
};

Loại bỏ các dòng dữ liệu trùng nhau.

var products = (from od in context.Order_Details  join p in context.Products on od.ProductID equals p.ProductID
select new { od.ProductID, p.ProductName}).Distinct();
//Tương đương SELECT DISTINCT trong SQ

Lấy hóa đơn có sản phẩm bán là 7(ProductID = 7)

var customers = from od in context.Order_Details where od.ProductID == 7
select od;

Lấy sản phẩm có đơn giá trong khoảng 20-30.

var products = from p in context.Products
where p.UnitPrice >= 20 && p.UnitPrice <= 30//Tương đương BETWEEN trong SQL
select new { p.ProductName, p.UnitPrice, p.UnitsInStock, p.UnitsOnOrder };

Lấy tất cả các sản phẩm đã bán ra.

var products = from p in context.Products where (from od in context.Order_Detailsselect od.ProductID).Contains(p.ProductID)
select new {p.ProductID, p.ProductName, p.UnitPrice, p.UnitsInStock,
p.UnitsOnOrder };//Tương đương từ khóa IN trong SQL

Lấy tất cả các sản phẩm chưa bán ra.

var products = from p in context.Products
where !(from od in context.Order_Details
select od.ProductID).Contains(p.ProductID)
//Tương đương từ khóa NOT IN trong SQL
select new {
p.ProductID, p.ProductName, p.UnitPrice, p.UnitsInStock, p.UnitsOnOrder };

Lấy danh sách khách hàng có tên bắt đầu là “Sa”.

var customers = from c in context.Customers
where c.CompanyName.StartsWith("Sa")//Tương đương LIKE 'Sa%' trong SQL
select new { c.CustomerID, c.CompanyName, c.ContactName, c.City, c.Country };

Lấy danh sách khách hàng có tên kết thúc bằng “es”.

var customers = from c in context.Customers
where c.CompanyName.EndsWith("es")//Tương đương LIKE '%es' trong SQL
select new { c.CustomerID, c.CompanyName, c.ContactName, c.City, c.Country };

Lấy danh sách khách hàng có chứa chuỗi “sa” trong CompanyName.

var customers = from c in context.Customers
where c.CompanyName.Contains("Sa")//Tương đương LIKE '%Sa%' trong SQL
select new { c.CustomerID, c.CompanyName, c.ContactName, c.City, c.Country };

Lấy danh sách khách hàng tại Anh và Pháp.

var customers = (from c in context.Customers
where c.Country == "UK"
select new
{
c.CustomerID,
c.CompanyName,
c.ContactName,
c.City, c.Country
}).Union(//Tương đương PHÉP HỢP UNION trong SQL
from c in context.Customers
where c.Country == "France"
select new {
c.CustomerID,
c.CompanyName,
c.ContactName,
c.City,
c.Country } );

Lấy danh sách khách hàng có hóa đơn.

var customers = from c in context.Customers
join o in context.Orders on c.CustomerID equals o.CustomerID
//Tương đương INNER JOIN trong SQL
orderby c.CustomerID, o.OrderID
select new {
c.CustomerID,
o.OrderID,
OrderDate = o.OrderDate.Value.ToShortDateString(),
c.CompanyName,
c.City,
c.Country };

Lấy hóa đơn của khách hàng, bao gồm khách hàng không có hóa đơn.

var customers = from c in context.Customers
join o in context.Orders
on c.CustomerID equals o.CustomerID into OD
from o in OD.DefaultIfEmpty()//Tương đương OUTER JOIN trong SQL
select new
{
CustomerID = c.CustomerID,
CompanyName = c.CompanyName,
OrderID = o == null ? 0 : o.OrderID
};

Đếm số hóa đơn đối với mỗi khách hàng

var customers = from c in context.Customers
select new { c.CustomerID, c.CompanyName, c.Orders.Count };

Đếm số hóa đơn đối với khách hàng có lớn hơn 5 hóa đơn.

var customers = from c in context.Customers
where c.Orders.Count >5
select new {c.CustomerID, c.CompanyName, c.Orders.Count };

Đếm số hàng hóa trên mỗi hóa đơn và tính đơn giá bình quân của hóa đơn.

var orders = from od in context.Order_Details
group od by od.OrderID into OD//Tương đương GROUP BY trong SQL
orderby OD.Key
select new
{
OrderID = OD.Key,
ProductID = OD.Count(),
UnitPrice = OD.Average(m => m.UnitPrice)
};

Đếm số hàng hóa trên mỗi hóa đơn và tính giá trị hóa đơn.

var orders = from od in context.Order_Details
group od by od.OrderID into OD
orderby OD.Key
select new
{
OrderID = OD.Key,
Product = OD.Count(),
UnitPrice = OD.Sum(m => m.UnitPrice)
};

Lấy sản phẩm có giá bán cao nhất và thấp nhất trong mỗi hóa đơn.

var orders = from od in context.Order_Details
group od by od.OrderID into OD
orderby OD.Key
select new 
{
OrderID = OD.Key,
MinPrice = OD.Min(m => m.UnitPrice),
MaxPrice = OD.Max(m => m.UnitPrice)
};

Lấy giá bán cao nhất và thấp nhất của mỏi sản phẩm.

var orders = from od in context.Order_Details
join p in context.Products on od.ProductID equals p.ProductID
group od by new { p.ProductID, p.ProductName } into OD
orderby OD.Key.ProductID
select new 
{
ProductID = OD.Key.ProductID,
ProductName = OD.Key.ProductName,
MaxPrice = OD.Max(m => m.UnitPrice),
MinPrice = OD.Min(m => m.UnitPrice)
};
Nguồn: http://vietshare.vn
  1. Chưa có phản hồi.
  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: