1.Today’s Problem: Data != Objects
問題:在業務邏輯中,我們需要的是對象,而在數據庫中存儲的是數據,在以前的技術中,通常需要寫很多的代碼來編寫數據訪問層。
public class Customer
{
public int CustomerId;
public string Name;
public string City;
public void Validate() // Todo: Add Business Validation
}
}
GridView1.DataSource = from customer in db.Customers
where customer.City == "London"
select customer;
GridView1 DataBind();
可以採用Sql server 2005的跟蹤器,跟蹤批處理和存儲過程,可以很好的跟蹤到這些執行情況。
2.Searching/Sorting an Array
string [] cities = { “Auckland”, “Oslo”, “Sydney”,“Seattle”, “Paris”, “Los Angeles” };
IEnumerable<string> places = from city in cities
where city.Length > 5
orderby city descending
select city;
GridView1.DataSource = places;
GridView1.DataBind();
3.Searching/Sorting City Collection[強類型集合的查詢]
public class City
{
public string Name;
public string Country;
public int DistanceFromSeattle;
}
List<City> locations = GetLocations();
IEnumerable<City> places = from city in locations
where city.DistanceFromSeattle > 1000
orderby city.Country, city.Name
select city;
GridView1.DataSource = places;
GridView1.DataBind();
4.LINQ需求和特性
利用編譯器對”匿名類型”的支持可以放心的使用LINQ
List<City> cities = CityUtilityHelper.GetCities();
var places = from city in cities
where city.DistanceFromSeattle > 1000
select new {
City = city.Name,
Country = city.Country,
DistanceInKm = city.DistanceFromSeattle * 1.61
};
GridView1.DataSource = places;
GridView1.DataBind();
5.總結
LINQ 的查詢結果序列可以被綁定到任何ASP NET 中的數據綁定控件