List<Product> p = new List<Product>();
p.Add(new Product() { Id = 11, Name = "asd" });
p.Add(new Product() { Id = 13, Name = "asddd" });
p.Add(new Product() { Id = 14, Name = "asdsss" });
p.Add(new Product() { Id = 15, Name = "xxx" });
p.Add(new Product() { Id = 16, Name = "cccc" });
p.Add(new Product() { Id = 17, Name = "a ccsd" });
IEnumerable<Product> list2 = from x in p where x.id>14 select x;
List<Product> list3= list2.ToList();//筛选结果查询表达式
List<Product> list4=p.FindAll(x=>x.id>14);//平时直接使用的。
如上筛选;
项目中以前一直使用的是C#,List封装的自带方法List.FindAll()。或者直接用循环来判断筛选。
今天翻书看到这种查询表达式。之前没有接触过。就记录下。
主要理解不难。
格式
from x in 数据源 where (条件) select x
按书上说说明是:
from 声明了一个范围变量x,in后面为数据源,where 后面是帅选的依据,select 是要取的值。
一开始from 声明了一个范围变量x,这句话一直不理解。
直到和拉姆达表达式对比了下。我把他理解为匿名那个X了。在这个列子里应该是Product这个类。
select 取值 在这里X 是返回所有的Product ,换成x.id,那返回的就是int的数组了。
其他还有orderby groupby 等等语句。这些和sql 语句都是差不多的。大同小异。
这个查询表达式还能和方法调用可以混用。
就相当于后面还能使用集合自带的那些方法。