标准查询运算符:定义在System.Linq.Enumerable类中的50多个为IEnumerable<T>准备的扩展方法,这些方法用来

对它操作的集合进行查询筛选。

筛选集合Where:需要提供一个带bool返回值的“筛选器”,从而表明集合中某个元素是否应该被返回。

查询投射,返回新对象集合IEnumerable<TSource> Select()

统计数量 int Count()

多条件排序 Order By().ThenBy().ThenBy()

集合链接Join()

......

public class NineDemo
{
public static void TestNine()
{
List<User> usList =Five.GetUserList();
List<Dept> dtLsit =Five.GetDeptList(); //1.Where的用法
List<User> user = usList.Where(new Func<User,bool>(delegate(User u){return u.Age >})).ToList(); //遍历所以用户姓名+年龄
usList.ForEach(u=>Console.WriteLine(u.Name+u.Age); //遍历 年龄大于12的用户
user.ForEach(u=>Console.WriteLine(u.Name); //缩写 年龄大于12的用户
List<User> user = usList.where(u=>u.Age > ); // 2. Order排序
List<User> user = usList.OrderByDescending(u=>u.Age).ToList();
//先按年龄降序、手机号降序、姓名升序
List<User> user = usList.OrderByDescending(u=>u.Age).ThenByDescending(u=>u.Phone).ThenBy(u=>u.Name).ToList(); // 3. Join 链接
//User 和 Dept(deptId) 要有关系,User中有deptId .
//得到一个新的集合(匿名类) (u代表usList,p代表dtList)
var ud = usList.Join(dtLsit,u=>u.DeptId,p=>DeptId,(u,p)=>new {UserName=u.Name,LoginName=u.LoginName,Deptname=p.DeptName}).ToList(); //遍历
ud.ForEach(u=>Console.WriteLine(u.Name+u.DeptName));
-------------
     //第二种方式
//临时封装一个实体,用来接收新的数据
[Serializable]
public class UserDept{
public string UserName{get;set;}
public string LoginName{get;set;}
public string Deptname{get;set;}
} //得到一个新的集合(UserDept集合接收)
List<UserDept> ud = usList.Join(dtLsit,u=>u.DeptId,p=>DeptId,(u,p)=>new UserDept(){UserName=u.Name,LoginName=u.LoginName,Deptname=p.DeptName}).ToList(); //遍历
ud.ForEach(u=>Console.WriteLine(u.Name+u.DeptName)); //4. GroupBy 分组
//按照集合中的用户的部门编号进行分组(用IEnumerable<IGrouping<string,User>>接收)
IEnumerable<IGrouping<string,User>> usersGroup = usList.GroupBy(u=>u.DeptId);
//也可以放在匿名中
var usersGroup = usList.GroupBy(u=>u.DeptId);
//遍历
foreach(IGrouping<string,User> group in userGroup){
Console.WriteLine("部门编号"+group.Key);
//遍历组中的元素
foreach(User _user in group){
Console.WriteLine(_user.Name+_user.Phone);
}
} //5. Skip+Take分页
//Skip的意思:跳过,Take:拿,取
//前提数据源按一定的列进行排序
List<User> pageList = usList.OrderBy(u=>u.Name).ToList();
//取第二页数据
List<User> us = GetPageListByIndex(pageList,);
//遍历
us.ForEach(u=>u.Name+u.Phone); //封装一个方法
//根据页码提取当页数据 ,list要分页的数据,pageIndex页码
static List<User> GetPageListByIndex(List<User> list,int pageIndex){
int pageSize = ;
return list.Skip((pageIndex-)*pageSize).Take(pageSize).ToList();
} }
}

MVC ---- 标准查询运算符的更多相关文章

  1. .NET中那些所谓的新语法之四:标准查询运算符与LINQ

    开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...

  2. .NET LINQ标准查询运算符

    标准查询运算符概述      “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法. 大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了 IEnumerable<T> ...

  3. SQO (标准查询运算符)方法 & Linq To Object

    #region SQO (标准查询运算符) 方法 #region Where() Find() FindAll() FirstOrDefault()等方法 static void c01where() ...

  4. 十四、C# 支持标准查询运算符的集合接口

    支持标准查询运算符的集合接口. System.Linq.Enumeralbe类提供的一些常用的API 来执行集合处理 1.匿名类型 2.隐匿类型的局部变量 3.集合初始化器 4.集合 5.标准查询运算 ...

  5. “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法

    “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 IQueryable& ...

  6. C#3.0新增功能09 LINQ 标准查询运算符 01 概述

    连载目录    [已更新最新开发文章,点击查看详细] 标准查询运算符 是组成 LINQ 模式的方法. 这些方法中的大多数都作用于序列:其中序列指其类型实现 IEnumerable<T> 接 ...

  7. C#3.0新增功能09 LINQ 标准查询运算符 02 查询表达式语法

    连载目录    [已更新最新开发文章,点击查看详细] 某些使用更频繁的标准查询运算符具有专用的 C# 语言关键字语法,使用这些语法可以在查询表达式中调用这些运算符. 查询表达式是比基于方法的等效项更具 ...

  8. C#3.0新增功能09 LINQ 标准查询运算符 03 按执行方式的分类

    连载目录    [已更新最新开发文章,点击查看详细] 标准查询运算符方法的 LINQ to Objects 实现主要通过两种方法之一执行:立即执行和延迟执行.使用延迟执行的查询运算符可以进一步分为两种 ...

  9. C#3.0新增功能09 LINQ 标准查询运算符 04 运算

    连载目录    [已更新最新开发文章,点击查看详细] 本篇主要介绍标准查询运算符的常用运算功能. 01 对数据排序 排序操作基于一个或多个属性对序列的元素进行排序. 第一个排序条件对元素执行主要排序. ...

随机推荐

  1. ubuntu,windows 卸载安装mysql

    首先删除mysql: sudo apt-get remove mysql-* 1 然后清理残留的数据 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dp ...

  2. 循环结构 for

    for格式:for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句:循环体 } ------------------------------------ -------------- ...

  3. 简单的应用可以用storyBoard

    可是问题,你不知道你的项目有多复杂,storyBoard跳转控制有代码这么灵活吗? 1. 假是是根据推送来推出页面呢? 2. 假如我要根据不同情况不停地推出不同的页面呢?storyBoard怎么确定关 ...

  4. 常用软件安装及VS插件工具

    常用开发工具安装 开发环境 Visual Studio 2013 Microsoft SQL Server 2008 源代码管理 Git TortoiseGit GitScc Provider Cru ...

  5. 表单验证——JqueryValidator、BootstrapValidator

    表单验证两种方式: 1.JqueryValidator <!DOCTYPE html> <html lang="en"> <head> < ...

  6. 转载如何实现portlet之间的传递参数

    Liferay 6开发学习(三十):跨页面Portlet之间的调用与数据传递 2014年10月09日 Liferay 评论 2 条 阅读 4,209 views 次 Portlet之间的通信方法有多种 ...

  7. linux cut字符串切割

    linux字符串列截取  cut  -d ‘分割条件’ -f ‘列数’ [root@LocalWeb01 ~]# less  /etc/passwd | grep '^user' | grep -v ...

  8. Echarts使用及动态加载图表数据 折线图X轴数据动态加载

    Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯JavaScript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...

  9. yii2之创建管理员

    第一步,使用迁移文件建表admin 先建立数据迁移文件: 小贴士,如果发现自己改错了,需要重新修改迁移文件 第二步,使用gii工具创建model 创建一个新的model,继承AdminAR,方便以后管 ...

  10. C++ Word Count 发布程序

    前段时间,模仿 Linux 系统下的 wc 程序,在 Windows 系统环境下使用 C/C++ 实现了一个相似的 WC 程序,只不过有针对性,针对的是 C/C++,Java 等风格的源代码文件. 此 ...