zoukankan      html  css  js  c++  java
  • linq、lambda基本语句

    LINQ (语言集成查询)

    LINQ的关键词:from, select, in, where, group by, orderby, …

    from 临时变量 in 实现IEnumerable<T>接口的对象

    where条件表达式

    [orderby 条件]

    [group by 条件]

    select 临时变量中被查询的值

    实现IEnumerable<T>接口的对象.LINQ方法名(lambda表达式)

    1.查询一个int数组中小于5的数字,并按照大小顺序排列

    static void Main(string[] args)

    {

    int[] arr = new int[] { 8, 5, 89, 41, 1, 2, 3, 65, 1 };

    var m = from n in arr where n < 5 orderby n descending select n;//小于5,并且倒序排列显示

    foreach (var n in m)

    {

    Console.WriteLine(n);

    }

    Console.ReadLine();

    }

    2. List<User> userlist = new List<User>(4) { user1, user2, user3, user4 };

    List<School> Schlist = new List<School>() {
    new School(1,"武汉大学"),new School(2,"华中科技大学"),new School(3,"华中师范大学")
    };

    (1)求和

     var sum = userlist.Where(a => { return a.ID > 0; }).Sum(a=>a.ID);

    Console.WriteLine(sum);

    IEnumerable.Where()方法里面的参数数委托类型Func<TSource, bool> 前面为参数 最后面一个为返回值

    (2)求最大最小值 Max Min

    var max = userlist.Max(a => a.ID);

    Console.WriteLine(max);
    //最小值
    var min = userlist.Min(a => a.ID);
    Console.WriteLine(min);

    (3)循环forEach

    userlist.ForEach(a =>{
       if (a.Age > 20){Console.WriteLine(a.ID);}
     });

    (4)条件筛选where

    var user = userlist.Where(a => a.ID == 114).Single();
    //筛选所有男性用户
     var templist = userlist.Where(a => a.Sex == "男").ToList();

    (4)排序

     //排序  根据ID逆序
    templist = userlist.OrderByDescending(a => a.ID).ToList();
    //升序
    templist = userlist.OrderBy(a => a.ID).ToList();

    (5)分组ToLookup和GroupBy

    //分组
     var lookup = userlist.ToLookup(a => a.Sex);
     foreach (var item in lookup)
     {
       Console.WriteLine(item.Key);
       foreach (var sub in item)
       {
           Console.WriteLine("\t\t"+sub.Name+" "+sub.Age);
        }
     }
                //另一种
             var dic =  userlist.GroupBy(a => a.Sex);
             foreach (var item in dic)
               {
                   Console.WriteLine(item.Key);
                   foreach (var sub in item)
                   {
                       Console.WriteLine("\t\t" + sub.Name + " " + sub.Age);
                   }
               }
               

    (6)内联接

    //联接
    var temp = from usertemp in userlist join sch in Schlist on usertemp.SchID equals sch.SchID 

    select new { Id = usertemp.ID, Name = usertemp.Name, Age = usertemp.Age,Schname=sch.SchName };

    二、

    WebTestDBEntities db = new WebTestDBEntities();

    1.  linq查询所有列的数据

    var userInfoList = from u in db.UserInfo

                         where u.ID == 10

                         select u;

    2.  linq查询部分列的数据

    var userInfoList = from u in db.UserInfo

                         where u.ID >= 1

                         select new { Name = u.UserName, Pwd = u.UserPass };

    foreach (var userInfo in userInfoList)

    {

        Response.Write(userInfo.Name + ":" + userInfo.Pwd + "<br/>");

    }

    3. lambda查询所有列数据

    var userInfoList = db.UserInfo.Where<UserInfo>(u => u.ID > 0);

    foreach (var userInfo in userInfoList)

    {

        Response.Write(userInfo.UserName + ":" + userInfo.UserPass + "<br/>");

    }

    4. lambda查询部分列数据

    var userInfoList = db.UserInfo.Where<UserInfo>(u => u.ID > 0).Select(a => new { Name = a.UserName, Pwd = a.UserPass });

    foreach (var userInfo in userInfoList)

    {

        Response.Write(userInfo.Name + ":" + userInfo.Pwd + "<br/>");

    }

    5. 排序

    var userInfoList = db.UserInfo.Where<UserInfo>(c => true).OrderBy<UserInfo, int>(u => u.ID).Select(u => new { Name = u.UserName,Email=u.Email });//升序排序

    var userInfoList = db.UserInfo.Where<UserInfo>(c => true).OrderByDescending<UserInfo, int>(u => u.ID).Select(u => new { Name = u.UserName, Email = u.Email });//降序排序

    var userInfoList = (from u in db.UserInfo select u).OrderByDescending<UserInfo, int>(c => c.ID).Select(u => new { Name = u.UserName, Email = u.Email });

    6.分页查询

    int pageIndex = 2;

    int pageSize = 2;

    var userInfoList = db.UserInfo.Where<UserInfo>(c => true).OrderBy<UserInfo, int>(u => u.ID).Skip<UserInfo>((pageIndex - 1) * pageSize).Take<UserInfo>(pageSize);

    foreach (var userInfo in userInfoList)

    {

       Response.Write(userInfo.UserName + "<br/>");

    }

    7.查询

    myDataBaseEntities myDataBase = new myDataBaseEntities();

    var list = myDataBase.Set<MyUser>().AsNoTracking().Where(e => e.UserID == userID && e.Password == passWord).ToList();

    return list.Count > 0 ? true : false;

    8.新增

    myDataBaseEntities myDataBase = new myDataBaseEntities();

    var list = myDataBase.Set<MyUser>().Add(myUser);

    return myDataBase.SaveChanges() > 0 ? true : false;

    9.修改

    myDataBaseEntities myDataBase = new myDataBaseEntities();

    var query = myDataBase.Set<MyUser>().Where(e => e.RowGuid == myUser.RowGuid).FirstOrDefault();

    query.UserID = myUser.UserID;

    query.UserName = myUser.UserName;

    query.Password = myUser.Password;

    myDataBase.Entry<MyUser>(query).State = EntityState.Modified;

    return myDataBase.SaveChanges() > 0 ? true : false;

    10.删除

    myDataBaseEntities myDataBase = new myDataBaseEntities();

    var list = myDataBase.Set<MyUser>().Remove(myUser);

    return myDataBase.SaveChanges() > 0 ? true : false;

  • 相关阅读:
    Linux账户密码安全策略设置 /etc/login.defs:
    GPS网络时间服务器安装注意事项
    ntp时间校准服务器的调试方法
    北斗网络时钟服务器的特点
    sntp时间服务器的介绍
    网络校时服务器
    综合时间码分配器介绍
    子母钟系统介绍
    智能计数器简介
    怎样选择通用计数器?
  • 原文地址:https://www.cnblogs.com/chenwan1218/p/13061484.html
Copyright © 2011-2022 走看看