日期:2014-05-17  浏览次数:20888 次

看看这条Linq语句的作用
3.元素:
查找每个类别中单价最低的产品:
SQL code
 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过虑后的数据集
------解决方案--------------------
探讨
group p by p.CategoryID into g
是将数据分组排序后保存到g
那此时的g和上边的p除了排序过,还有什么区别?