一個VEW的事情我經常這樣做:
1)佈局:總是從下一行的查詢。例如: 別這樣
var allCustomersThatDontContainUnpayedOrders = from customer in db.Customers
where customer.Orders ...
select customer;
但做到這一點:
var allCustomersThatDontContainUnpayedOrders =
from customer in db.Customers
where customer.Orders ...
select customer;
2)使用多個where
條款,你可以。我試圖找到第二個片段比第一更易讀:
var results =
from customer in db.Customers
where customer.Name.Contains(search) && customer.Address.City != null &&
customer.Employee.IsSenior
select customer;
var results =
from customer in db.Customers
where customer.Name.Contains(search)
where customer.Address.City != null
where customer.Employee.IsSenior
select customer;
3)防止,如果你能加入。 LINQ to SQL通常允許您在不使用難以理解的join
語句的情況下對所有父子關係進行「點」化。
4)通常你會看到許多查詢看起來很相似。您可能總是希望根據用戶的權限過濾某些記錄。您可以通過以下方法提取此代碼:
var customers = db.Customers;
customers = FilterBasedOnUserRights(customers, currentUser);
public static IQueryable<Customer> FilterBasedOnUserRights(
IQueryable<Customers customers, User currentUser)
{
return
from customer in customers
where [big complicated where clause]
select customer;
}
不要忘記標記您最喜歡的答案。 NetSide的答案將是一個很好的候選人。 – Steven 2010-11-23 20:19:32