C#3.0中的新增功能09 LINQ 基础08 支持 LINQ 的 C# 功能
查询表达式使用类似于 SQL 或 XQuery 的声明性语法来查询 IEnumerable 集合。?在编译时,查询语法转换为对?LINQ?提供程序的标准查询运算符扩展方法实现的方法调用。?应用程序通过使用?
using ?指令指定适当的命名空间来控制范围内的标准查询运算符。?下面的查询表达式获取一个字符串数组,按字符串中的第一个字符对字符串进行分组,然后对各组进行排序。
var query = from str in stringArray group str by str[0] into stringGroup orderby stringGroup.Key select stringGroup; 有关详细信息,请参阅?LINQ 查询表达式。
可以使用?var?修饰符来指示编译器推断并分配类型,而不必在声明并初始化变量时显式指定类型,如下所示:
var number = 5; var name = "Virginia"; var query = from str in stringArray where str[0] == ‘m‘ select str; 声明为? 有关详细信息,请参阅隐式类型局部变量。
通过对象和集合初始值设定项,初始化对象时无需为对象显式调用构造函数。?初始值设定项通常用在将源数据投影到新数据类型的查询表达式中。?假定一个类名为?
Customer ,具有公共?Name ?和?Phone ?属性,可以按下列代码中所示使用对象初始值设定项:
var cust = new Customer { Name = "Mike",Phone = "555-1212" }; 继续我们的? var newLargeOrderCustomers = from o in IncomingOrders where o.OrderSize > 5 select new Customer { Name = o.Name,Phone = o.Phone }; 数据源可能具有比? var newLargeOrderCustomers = IncomingOrders.Where(x => x.OrderSize > 5).Select(y => new Customer { Name = y.Name,Phone = y.Phone }); ? 匿名类型由编译器构造,且类型名称只可用于编译器。?匿名类型提供一种在查询结果中对一组属性临时分组的简便方法,无需定义单独的命名类型。?使用新的表达式和对象初始值设定项初始化匿名类型,如下所示: select new {name = cust.Name,phone = cust.Phone}; 有关详细信息,请参阅匿名类型。 扩展方法是一种可与类型关联的静态方法,因此可以像实例方法那样对类型调用它。?实际上,利用此功能,可以将新方法“添加”到现有类型,而不会实际修改它们。?标准查询运算符是一组扩展方法,它们为实现?IEnumerable<T>?的任何类型提供?LINQ?查询功能。 有关详细信息,请参阅扩展方法。 Lambda 表达式是一种内联函数,该函数使用 => 运算符将输入参数与函数体分离,并且可以在编译时转换为委托或表达式树。?在?LINQ?编程中,在对标准查询运算符进行直接方法调用时,会遇到 lambda 表达式。 有关详细信息,请参见:
其他技术请参阅
? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |