public static void IEnumerableAndIQuerable()
{
///我们平时使用的表达式树,是编写的lambda表达式然后编译成的表达式树,
///也就是说平时一般情况使用的表达式树都是编译器帮我们完成的
Expression<Func<Student, bool>> expression = t => t.Name == "农码一生" && t.Sex == "女";
List<Student> list = new List<Student>() {
new Student{Name="农码一生",Age=18,Address="长安街",Sex="女"},
new Student{Name="农码一生",Age=18,Address="长安街",Sex="男"},
new Student{Name="农码一生",Age=18,Address="长安街",Sex="男"},
new Student{Name="农码一生",Age=18,Address="长安街",Sex="男"},
new Student{Name="农码一生",Age=18,Address="长安街",Sex="女"},
};
#region IEnumerable
//1.第一种情况
IEnumerable e1 = list;//里氏替换原则
foreach (dynamic item in e1)
{
item.Address = "3";
Console.WriteLine(item.Address);
}
//2.第二种情况
Func<Student, bool> lamb = t => t.Name == "农码一生" && t.Sex == "女";
// IEnumerable<Student> e3 = list.AsEnumerable<Student>().Where(expression);
//Where方法不支持写Expressoin 报错
IEnumerable<Student> e2 = list.AsEnumerable<Student>().Where(expression.Compile());
//expression.Compile() 转化为Lambda了,IEnuarable中的只支持Lambda写法
#endregion
IQueryable<Student> i1 = list.AsQueryable<Student>().Where(expression);
//Where方法支持expression写法
Student stu = i1.FirstOrDefault();
}
IQueryable和IEnumerable的区别?
最新推荐文章于 2024-03-18 08:01:52 发布