C# linq查询 lambda表达式

主函数:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;

namespace lambda //lambda表达式  list集合
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            //linq用来做数据查询的

            // 初始化 Hero
            var heroList = new List<hero>()  //new 后面跟一个括号用来做初始化的  下面的也同理
            {

                new hero(){       //new一个对象 做初始化  属性之间初始化用逗号分割
                 ID = 1,Age = 28, Level = 9,Name = "Mo", Skills = "Sword"
                },

                 new hero(){ID = 2,Age = 35, Level = 9,Name = "Ki", Skills = "Sword"}, //剑   -----一个花括号 一个对象
                 new hero(){ID = 3,Age = 50, Level = 7,Name = "Hi", Skills = "Knife"}, //刀
                 new hero(){ID = 4,Age = 28, Level = 6,Name = "Fi", Skills = "dagger"}, //匕首
                 new hero(){ID = 5,Age = 26, Level = 6,Name = "Ti", Skills = "Qing Kung"}, //轻功
                 new hero(){ID = 6,Age = 25, Level = 8,Name = "Fren", Skills = "Knife"} //刀
            };

            //初始化 hero的skills   list集合列表

            var  SkillsList = new List<Skills>()  //new 后面跟一个括号用来做初始化的  下面的也同理
            {

                new Skills(){       //new一个对象 做初始化  属性之间初始化用逗号分割
                 ID = 1,Name = "Sword", damage = 10
                },
                 new Skills(){ID = 2,Name = "Knife", damage = 9}, //刀
                 new Skills(){ID = 3,Name = "dagger", damage = 9}, //匕首
                 new Skills(){ID = 4,Name = "Qing Kung", damage = 8} //轻功
            };

            //法1: foreach 遍历查询
            var ret = new List<hero>();
            foreach (var temp in heroList)
            {
                if (temp.Level > 8)
                {
                    ret.Add(temp);  //把我们想要的结果  添加到我们建的一个集合专门用来接收 筛选结果的

                }
            }
            foreach (var temp in ret)
            {
                Console.WriteLine(temp);  //直接打印是会出现类名的 不重写tostring方法(写在类里) 直接调tostring也是直接出现类名的
                //不重写调用的是object的tostring方法 然后直接打印类的类型
            }

            Console.WriteLine(" ");


            //for(int temp = 0;temp<ret.Count;temp++)
            //{

            //    Console.WriteLine(ret[temp].ToString());  //直接打印出类名了 
            //}
            // Console.ReadKey(); //用来接收 回车键的 

            //法2:LINQ查询
            //(1)表达式写法
            //form关键字在集合里做查询 where用来添加条件限制 select关键字表示把找到的集合m返回 m in 什么就是什么类型
            //var res = form m in heroList  //找不到这个程序集 用不了 
            //   form k in Skills  //的话就是再联合两个表
            //    where m.Level > 8 && m.ID == "Knife"   //表示并列条件
            //     select m;
            //foreach (var temp in res)
            //{
            //    Console.WriteLine(temp); 

            //}

            //(2)扩展写法:集合自带一个where过滤的方法
            //法2
            var rea = heroList.Where(Test_1); //里面传的是一个委托方法 把list丢进去筛选 然后返回布尔值
            foreach (var temp in rea)
            {
                Console.WriteLine(temp);  
               
            }

            //法3
            //var res = form m in heroList;  //但是这一条还是 没有form的关键字 的命名空间
            //联合查询
            //var reg = heroList.Where(m => m.ID > 5 && m.Name == "Knife");
            //foreach (var temp in reg)
            //{
            //    Console.WriteLine(temp);

            //}




        }

        static bool Test_1(hero arg)
        {
            
            if (arg.ID > 3) return true;
            return false; //第一次看这种省略else的 条件语句 不过这样确实可以
        }

    }
}

类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lambda
{
    class hero   //下次还是要想好类名  不然不知道这个类的内容是干嘛的
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Skills { get; set; }  //在这里深入一个类讲它的技能
        public int Level { get; set; }

        public override string ToString()  //直接点左边 快速生成重写
        {
            //return base.ToString();
            return string.Format("id:{0},Name:{1},Age:{2},Skills:{3},Level:{4}", ID, Name, Age, Skills, Level);

        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lambda
{
    class Skills
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int damage { get; set; } //杀伤力
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耐心195

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值