var categories =
from p in db.Products
group p by p.CategoryID into g
select new {
CategoryID = g.Key,
CheapestProducts =
from p2 in g
where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)
select p2
};
Max 说明:返回集合中元素的最大值;不延迟。生成SQL语句为:SELECT MAX(…) FROM
------------------------------------------------
由期是"group p by p.CategoryID into g"这条语句的作用是什么
------解决方案-------------------- from p in db.Products 表示从表中将产品对象取出来。 group p by p.CategoryID into g表示对p按CategoryID字段归类。其结果命名为g,一旦重新命名,p的作用域就结束了,所以,后面select时,只能select g。
------解决方案-------------------- var categories = from p in db.Products group p by p.CategoryID into g select new { CategoryID = g.Key, CheapestProducts = from p2 in g where p2.UnitPrice == g.Min(p3 => p3.UnitPrice) select p2 }; ===================================== 查询表Products所有数据,并根据CategoryID 排序 然后进行分组 比如你查询出来有a,b,c,d,e五个字段,特别是主从表查询的时候字段比较多 这时你只需要其中的几个就可以分组,g就是一个别名 你这里返回的 var categories 的值就只有CategoryID 和CheapestProducts CheapestProducts是从这个g组里面根据UnitPrice过虑后的数据集
------解决方案--------------------