LINQ分组查询统计

LINQ分组查询统计

  • 这里介绍Linq使用Group By和Count获得每一个CategoryID中产品的数量,Linq使用Group By和Count获得每一个CategoryID中断货产品的数量等方面。html

    学常常会遇到Linq使用Group By问题,这里将介绍Linq使用Group By问题的解决方法。函数

    1.计数spa

    1. var q =翻译

    2. from p in db.Productshtm

    3. group p by p.CategoryID into g对象

    4. select new {blog

    5. g.Key,ip

    6. NumProducts = g.Count()get

    7. };产品

    语句描述:Linq使用Group By和Count获得每一个CategoryID中产品的数量。

    说明:先按CategoryID归类,取出CategoryID值和各个分类产品的数量。

    2.带条件计数

    1. var q =

    2. from p in db.Products

    3. group p by p.CategoryID into g

    4. select new {

    5. g.Key,

    6. NumProducts = g.Count(p => p.Discontinued)

    7. };

    语句描述:Linq使用Group By和Count获得每一个CategoryID中断货产品的数量。

    说明:先按CategoryID归类,取出CategoryID值和各个分类产品的断货数量。 Count函数里,使用了Lambda表达式,Lambda表达式中的p,表明这个组里的一个元素或对象,即某一个产品。

    3.Where限制

    1. var q =

    2. from p in db.Products

    3. group p by p.CategoryID into g

    4. where g.Count() >= 10

    5. select new {

    6. g.Key,

    7. ProductCount = g.Count()

    8. };

    语句描述:根据产品的―ID分组,查询产品数量大于10的ID和产品数量。这个示例在Group By子句后使用Where子句查找全部至少有10种产品的类别。

    说明:在翻译成SQL语句时,在最外层嵌套了Where条件。

    4.多列(Multiple Columns)

    1. var categories =

    2. from p in db.Products

    3. group p by new

    4. {

    5. p.CategoryID,

    6. p.SupplierID

    7. }

    8. into g

    9. select new

    10. {

    11. g.Key,

    12. g

    13. };

    语句描述:Linq使用Group By按CategoryID和SupplierID将产品分组。

    说明:既按产品的分类,又按供应商分类。在by后面,new出来一个匿名类。这里,Key其实质是一个类的对象,Key包含两个Property:CategoryID、SupplierID。用g.Key.CategoryID能够遍历CategoryID的值。

    5.表达式(Expression)

 List<Maticsoft.Model.V_StripFQCPrint> FQC_Lot_no = FQCList.OrderBy(O => O.Lot_n).ThenBy(T => T.YXLevel).ThenBy(T => T.Colors).ToList();
                    var q = from p in FQC_Lot_no group p by new { p.YXLevel, Criterion = int.Parse(p.Colors) <= 10 } into g select new { g.Key, newcount = g.Count() };//按YXLevel   和  p.Colors) 大于10 小于10分类。             

  foreach (var item in q)                    {                        dicZlot_no.Add(item.Key.ToString(), item.newcount);                    }////把分出来的序列放入字典

相关文章
相关标签/搜索