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 中的数据绑定控件