首页 > 其他 > 详细

标准查询运算符

时间:2017-01-12 22:27:49      阅读:247      评论:0      收藏:0      [点我收藏+]

标准查询运算符:定义在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 >12})).ToList();
        
        //遍历所以用户姓名+年龄
        usList.ForEach(u=>Console.WriteLine(u.Name+u.Age);
        
        //遍历 年龄大于12的用户
        user.ForEach(u=>Console.WriteLine(u.Name);
        
        //缩写 年龄大于12的用户
        List user = usList.where(u=>u.Age > 12);
        
        
        
        // 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 .
        //得到一个新的集合(匿名类)
         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,2);
        //遍历
        us.ForEach(u=>u.Name+u.Phone);
        
        //封装一个方法
        //根据页码提取当页数据 ,list要分页的数据,pageIndex页码
        static List<User> GetPageListByIndex(List<User> list,int pageIndex){
            int pageSize = 2;
            return list.Skip((pageIndex-1)*pageSize).Take(pageSize).ToList();
        }
          
    }
}

 

标准查询运算符

原文:http://www.cnblogs.com/youmingkuang/p/6279851.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!