• LINQ常用操作


    LINQ常用操作:查询,过滤,排序,分组,连接,聚合函数,元素操作符

    为了方便了解LINQ的操作,先准备一下测试数据源:

    //基础类型
    public class Friend
        {
            public int FId { get; set; }
            public string FriendName { get; set; }
            public int Age { get; set; }
            public string Phone { get; set; }
            public int FTypeId { get; set; }
        }
    
        public class FriendType
        {
            public int FTypeId { get; set; }
            public string FTypeName { get; set; }
        }
    
     //朋友信息
        IList<Friend> friendList = new List<Friend>() { 
                             new Friend() { FId = 1, FriendName = "小明", Age = 23 ,Phone="13800008883",FTypeId=1} ,
                             new Friend() { FId = 2, FriendName = "小华", Age = 20 ,Phone="17600008887",FTypeId=2} ,
                             new Friend() { FId = 3, FriendName = "小河", Age = 33 ,Phone="19800008889",FTypeId=1} ,
                             new Friend() { FId = 4, FriendName = "小连", Age = 26 ,Phone="18800008888",FTypeId=2} ,
                             new Friend() { FId = 5, FriendName = "小玲", Age = 22 ,Phone="14800008884",FTypeId=2} ,
                            };
    
     //朋友类型
        IList<FriendType> fTypeList = new List<FriendType>(){
                               new FriendType(){FTypeId=1,FTypeName="知心人"},
                               new FriendType(){FTypeId=2,FTypeName="好朋友"},
                            };

    LINQ查询

    //查询语法
    var friends = from f in friendList
                  select new {f.FId,f.FriendName,f.Age};
    
    //Lamdba语法
    var friends2 = friendList.Select(f => new { f.FId, f.FriendName,f.Age });

     LINQ过滤

    //查询语法
    var friends = from f in friendList
                        where f.Age > 20                         
                        select new {f.FId,f.FriendName,f.Age};
    
    //Lamdba语法
    var friends2 = friendList.Where(f=>f.Age>20).Select(f => new { f.FId, f.FriendName, f.Age });

    LINQ排序(升序、降序)

    //查询语法 升序
    var friends = from f in friendList
                        orderby f.Age                        
                        select new {f.FId,f.FriendName,f.Age};
    //Lamdba语法 升序
    var friends2 = friendList.OrderBy(f=>f.Age).Select(f => new { f.FId, f.FriendName, f.Age });
    
    //查询语法 降序
    var friends = from f in friendList
                        orderby f.Age descending                       
                        select new {f.FId,f.FriendName,f.Age};
    //Lamdba语法 降序
    var friends2 = friendList.OrderByDescending(f=>f.Age).Select(f => new { f.FId, f.FriendName, f.Age });

     LINQ分组

    var friends = from f in friendList
                  group f by f.FTypeId; 
    
    var friends2 = friendList.GroupBy(f => f.FTypeId);

     LINQ连接

    //查询语法
    var friendTypes = from f in friendList
                                  join ft in fTypeList
                                  on f.FTypeId equals ft.FTypeId
                                  select new
                                  {
                                      fName = f.FriendName,
                                      ftName = ft.FTypeName
    
                                  };
    //Lamdba语法
    var friendTypes2 = friendList.Join(
                    fTypeList,
                    f => f.FTypeId,
                    ft => ft.FTypeId,
                    (f, ft) => new
                    {
                        fName = f.FriendName,
                        ftName = ft.FTypeName
                    });

    LINQ聚合函数

    //平均值
    var avgAge = friendList.Average(u => u.Age);
    //总数值
    var userCount = friendList.Count();
    //最大值
    var maxAge = friendList.Max(u => u.Age);
    //最小值
    var minAge = friendList.Min(u => u.Age);
    //总和值
    var sumAge = friendList.Sum(u => u.Age);

    LING元素操作符

    //获取指定索引元素
    Friend fri = friendList.ElementAt(0);
    //获取最前一个元素
    Friend friFirst = friendList.First();
    Friend friFirst = friendList.FirstOrDefault();
    //获取最后一个元素 
    Friend frLast = friendList.Last();
    Friend frLast = friendList.LastOrDefault(); 
    //获取唯一元素 
    Friend friSignal = friendList.Single(u => u.Age < 21);
    Friend friSignal = friendList.SingleOrDefault(u => u.Age < 21);

    以上元素操作符区别说明:

    Frist与FristOrDefault 区别:如果源序列为空,Frist 则抛异常。FristOrDefault 如果序列中不包含任何元素,则返回默认值。

    Last与LastOrDefault 区别:如果源序列为空,Last 则抛异常。LastOrDefault 如果序列中不包含任何元素,则返回默认值。

    Single与SingleOrDefault 区别:Single 如果该序列并非恰好包含一个元素,则会引发异常。SingleOrDefault 如果这类元素不存在,则返回默认值;如果有多个元素满足该条件,此方法将引发异常。

  • 相关阅读:
    矩阵的阶
    python中'0b111'中的b 是什么意思
    Python字节码介绍
    多版本python共存,安装三方库到指定python版本
    关于python 中的__future__模块
    解决Python模块报错:ModuleNotFoundError: No module name 'StringIO'
    python常用魔法函数
    MySQL binlog
    MySQL start and stop
    Mysql 源码安装
  • 原文地址:https://www.cnblogs.com/herojy886/p/13335918.html
Copyright © 2020-2023  润新知