分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

.NET Framework 3.5中的LINQ简介

发布时间:2023-09-06 01:08责任编辑:白小东关键词:.NET

1. LINQ 概览

 1.1. 数据访问现状

 1.2. LINQ 数据访问方式

 1.3. LINQ 项目

2. 访问数组

 2.1. 查询数组

 2.2. 绑定到页面

3. 访问集合

 3.1. 自定义 City 类

public class City{public string Name;public string Country;public int DistanceFromSeattle;}List<City> locations = GetLocations();

 3.2. 查询City 集合

 3.3. 绑定到页面

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server"><Columns><asp:BoundField HeaderText="Country" DataField="Country" /><asp:BoundField HeaderText="City" DataField="Name" /><asp:BoundField HeaderText=“Dist” DataField="DistanceFromSeattle“/></Columns></asp:GridView>

 3.4. 绑定页面结果

4. 查询投影

 4.1. 查询投影(Select)

  ? 不返回所有数据列/属性
  ? 修改或者转化查询返回的数据
  ? 利用编译器对“匿名类型”的支持查询数据列/属性
  ? 生成匿名类型(’a)

 4.2. 使用匿名类型

 4.3. 匿名类型绑定

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server"><Columns><asp:BoundField HeaderText="Country" DataField="Country" /><asp:BoundField HeaderText="City" DataField=“City" /><asp:BoundField HeaderText="Dist (KM)" DataField="DistanceInKm" /></Columns></asp:GridView>

 4.4. 匿名类型绑定结果

5. 使用 λ 表达式

 5.1. 使用λ 表达式

 ? 查询语法是一个方便的声明性代码缩写您,可以手动编写它:
 ? IEnumerable expr = names
  .Where(s => s.Length == 5)
  .OrderBy(s => s)
  .Select(s => s.ToUpper());

 5.2. λ 表达式的委托声明
 ? λ 表达式是C# 2 0 匿名方法的自然演化结果

Func filter = delegate (string s) {return s.Length == 5;};Func extract = delegate (string s) {return s;};Func project = delegate (string s) {return s.ToUpper();};IEnumerable expr = names.Where(filter).OrderBy(extract).Select(project);

 5.3. 表达式树
 . 表达式树是λ 表达式的有效内存中数据表示形式,它使表达式的结构透明且显式。
 . 将λ 表达式指定给Expression 类型的变量、字段或参数,则编译器将发出表达式树。

BinaryExpression body = (BinaryExpression)filter.Body;ParameterExpression left = (ParameterExpression)body.Left;ConstantExpression right = (ConstantExpression)body.Right;Console.WriteLine("{0} {1} {2}", left.Name, body.NodeType,right.Value);

6. 查询操作符

 6.1. 查询操作符Where 的定义

public static class Sequence {  public static IEnumerable Where(this IEnumerable source,Func predicate) {foreach (T item in source)if (predicate(item))yield return item;}}

 6.2. 调用
 ? 普通的方式来调用扩展方法:
 ? IEnumerable<string> query =Enumerable.Where(names,s => s.Length < 6);
 ? C#语言允许我们使用如下的方式来调用扩展方法:
 ? IEnumerable<string> query = names.Where(s =>s.Length < 6);

 6.3. 标准查询操作符
 . 排序与分组
  – OrderBy & GroupBy
 . 聚合
  – Count
  – Sum
  – Average
  – Max
  – Min
 . 投影
  – Select & SelectMany

 6.3. 查询语法
 ? C# 的现有 foreach 语句通过 .NET Framework 的IEnumerable/IEnumerator 方法为迭代提供声明
性语法。foreach 语句完全是可选的,但经过证实,它是一个非常方便和常用的语言机制。
 ? 查询语法通过声明性语法为以下最常用的查询操作符简化了查询表达式:Where、Select、
SelectMany、GroupBy、OrderBy、ThenBy、OrderByDescending 和ThenByDescending。

 

.NET Framework 3.5中的LINQ简介

原文地址:http://www.cnblogs.com/lxh168/p/7468292.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved