主函数:
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; } //杀伤力
}
}