Linq to object
术语“LINQ to Objects”是指直接对任意 IEnumerable 或 IEnumerable<T> 集合使用 LINQ 查询,无需使用中间 LINQ 提供程序或 API,如 LINQ to SQL 或 LINQ to XML。 可以使用 LINQ 来查询任何可枚举的集合,如 List<T>、Array 或 Dictionary<TKey, TValue>。 该集合可以是用户定义的集合,也可以是 .NET Framework API 返回的集合。
从根本上说,LINQ to Objects 表示一种新的处理集合的方法。 采用旧方法,您必须编写指定如何从集合检索数据的复杂的 foreach 循环。 而采用 LINQ 方法,您只需编写描述要检索的内容的声明性代码。
另外,与传统的 foreach 循环相比,LINQ 查询具有三大优势:
1. 它们更简明、更易读,尤其在筛选多个条件时。
2. 它们使用最少的应用程序代码提供强大的筛选、排序和分组功能。
3. 无需修改或只需做很小的修改即可将它们移植到其他数据源。
通常,您要对数据执行的操作越复杂,就越能体会到 LINQ 相较于传统迭代技术的优势。
Linq to xaml
声明方法前要加上下面的声明,目前是猜测。
[Category("Grouping Operators")]
[Description("This sample uses group by to partition a list of products by category.")]
语法:toarray创建数组,tolist创建泛型集合。
var customerList = (
from e in XDocument.Load("customers.xml").
Root.Elements("customer")
select new Customer
{
CustomerID = (string)e.Element("id"),
CompanyName = (string)e.Element("name"),
Address = (string)e.Element("address"),
City = (string)e.Element("city"),
Region = (string)e.Element("region"),
PostalCode = (string)e.Element("postalcode"),
Country = (string)e.Element("country"),
Phone = (string)e.Element("phone"),
Fax = (string)e.Element("fax"),
Orders = (
from o in e.Elements("orders").Elements("order")
select new Order
{
OrderID = (int)o.Element("id"),
OrderDate = (DateTime)o.Element("orderdate"),
Total = (decimal)o.Element("total")
})
.ToArray()
}
).ToList();
|
|