Linq to SQL(联接 聚合 分组)

本文介绍了使用LINQ进行的三个查询案例:1. 获取每个类别中最贵及最便宜的产品价格;2. 统计每个类别中产品的总数及总价;3. 查找每个类别中最贵产品的名称及其价格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        NorthwindDBDataContext dc = new NorthwindDBDataContext();
        int count = dc.Products.Count();


     

        //1、获取根据分类ID得到最贵的、最便宜的、产品价格


        var result = from p in dc.Products
                     group p by p.CategoryID into g
                     select new
                     {
                         Max=g.Max(x=>x.UnitPrice),
                         Min=g.Min(x=>x.UnitPrice),
                         Group=g.Key
                     };

                   
                   
 

        //2、获得每个分类中产品的总个数,并显示分类名、总数、总价

        var result1 = from p in dc.Products
                      join c in dc.Categories
                      on p.CategoryID equals c.CategoryID
                      group new { p=p,c=c } by c.CategoryName into g
                      select new
                      {

                          Name = g.Key,
                          Sum=g.Sum(x=>x.p.UnitPrice),
                          Count=g.Count()

                      };
 


        //3、获得每个分类中最贵产品的价格和产品名字

        var result2 = from p in dc.Products
                      join c in dc.Categories
                      on p.CategoryID equals c.CategoryID
                      group new { p = p, c = c } by c.CategoryName into g
                      select new
                      {

                        Max=g.Max(x=>x.p.UnitPrice),
                        CategoryName=g.Key,
                        ProductName = (from p in dc.Products
                                       where p.UnitPrice == g.Max(x => x.p.UnitPrice)
                                       select p.ProductName).First()

                      };


       GridView1.DataSource = result2;
       GridView1.DataBind();
    }
}

转载于:https://www.cnblogs.com/Point-s/p/5947304.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值