在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文介绍了一些复杂的Linq语句的转换写法。 表 2-1. 转换步骤变量
扩展子句里使用Select和Group子句 如果你的查询表达式包含一个扩展子句,进行以下转换: 这里有个例子: 使用后面的转换步骤这最终会转换为: 显示枚举变量类型 如果你的查询表达式包含一个显示指定枚举变量类型的子句,进行以下转换: 使用后面的转换步骤这最终会转换为: 如果你的查询表达式包含一个联合子句,该子句显示指定一个枚举变量类型,进行如下转换: 这里有一个例子: 使用后面的转换步骤这最终会转换为: 提示:当枚举数据集合是C# 旧数据集合其中之一,显示类型枚举变量是必须的,如ArrayList。转换完成时,显示类型枚举变量将旧集合转换成一个实现IEnumerable<T>序列,以便其他查询操作可以执行的序列。 联合子句 如果查询表达式包含一个from子句,一个join子句,没有into延续子句,跟一个Select子句,进行如下转换: 这里有一个例子: 使用后面的转换步骤这最终会转换为: 如果查询表达式包含一个from子句,一个join子句,一个into延续子句,一个select子句,进行如下转换: 这里有一个例子: 使用后面的转换步骤这最终会转换为: 如果一个查询表达式包含一个from子句,一个join子句,没有into延续子句,一个其他任意的select子句,进行如下转换: 注意:现在,有一种代码模式在此转换步骤中匹配第一个代码模式。明确的说,你必须有一个查询表达式包含一个from子句,一个join子句,没有into延续子句,一个select子句。所以编译器将重复此转换步骤。如果一个查询表达式包含一个from子句,一个join子句,into延续子句,一个其他任意的select子句,进行如下转换: Let和Where子句 如果查询表达式包含一个from子句,立即跟一个Let子句,进行如下转换: 这里是一个例子: 使用后面的转换步骤这最终会转换为: 如果查询表达式包含一个from子句,立即跟一个Where子句,进行如下转换: 这里有个一个例子: 使用后面的转换步骤这最终会转换为: 多个生成器(From)子句 如果查询表达式包含两个from子句,一个select子句,进行如下转换: 这里是一个例子: 使用后面的转换步骤这最终会转换为: 如果查询表达式包含两个from子句,跟一个其他任意select子句,进行如下转换: 这里有一个例子: 使用后面的转换步骤这最终会转换为: Orderby子句 如果是升序的排序方向,进行如下转换: 这里有一个例子: 使用后面的转换步骤这最终会转换为: 如果任意一个字段为降序排序,转换成OrderByDescending或者ThenByDescending操作。这里的例子和上一个差不多,除了将名称修改成倒序排序: 使用后面的转换步骤这最终会转换为: Select子句 在查询表达式中,如果select项是和序列枚举变量相同的标示符,意思是你要select序列中存储的所有项,进行如下转换: 这里有一个例子: 如果select项是和序列枚举变量标示符不相同,意思是你要 select 除了序列中存储的全部项以外的其他项 (例如一个成员项或者一个匿名变量类型)来构造若干个成员项,进行如下转换: 这里有一个例子: Group子句 在查询表达式中,如果group项与序列枚举标示符相同,意思是你group整个序列中存储的某一项,进行如下转换: 这里有一个例子: 如果group项不同于序列枚举的标示符,意思是你group整个序列中存储的某些项,并将这些项存储在一个序列中,进行如下转换: 这里有一个例子: 这里的所有转换步骤都是完成,查询表达式完全转换成标准“.”表示法语法。 |
请发表评论