程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0入門系列(五)-之Where操作(2)

C# 3.0入門系列(五)-之Where操作(2)

編輯:關於C語言

該形式,其select操作使用了匿名對象,而這個匿名對象中,其屬性也是個匿名對象。

nested形式的:

var q =
from o in db.Orders
select new {
o.OrderID,
DiscountedProducts =
from od in o.OrderDetails
where od.Discount > 0.0
select od,
FreeShippingDiscount = o.Freight
};

其返回的對象集中的每個對象DiscountedProducts屬性中,又包含一個小的集合。也就是每個對象也是一個集合類。

Distinct形式的:

var q = (
from c in db.Customers
select c.City )
.Distinct();

該形式,篩選該字段中不相同的值。會被翻譯為

select distinct city from customers

where操作:

最簡單的

1,var q =
  from c in db.Customers
  where c.City == "London"
  select c;

2,var q =
  from e in db.Employees
  where e.HireDate >= new DateTime(1994, 1, 1)
  select e;

或與關系的where條件

1, var q =
from p in db.Products
where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
select p;
2, var q =
from p in db.Products
where p.UnitPrice > 10m || p.Discontinued
select p;
3, var q =
db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);

在上例中,1和2語句先被翻譯成類似3語句的形式,再被翻譯成sql語句,送回數據服務器。他們基本上一樣的。

欠套在first操作中的where條件:

first操作,其實質就是在sql語句前,加了一個top 1.

1,  Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");
2 Order ord = db.Orders.First(o => o.Freight > 10.00M);

第一個例子,是篩選customerid為"BONAP"的客戶,第二個篩選訂單運費大於10的訂單。First操作必須用這種級連的形式。比如

Shipper shipper = db.Shippers.First();

也可以把linq的expression和級連的形式混合使用,比如第一個例子,加入first操作,

var q =
(from c in db.Customers
where c.City == "London"
select c).First();

如果加入first操作,其返回是一個具體的對象,而不是一個集合。如果first操作沒有條件,它只是簡單的在sql語句中添加top 1,如果有條件,它在翻譯時,就會加入條件語句。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved