适用场景
统计数据,比如统计一些数据的个数,求和、最小值、最大值、平均数
Count
说明:返回集合中的元素个数,返回Int类型;不延迟。生成SQL语句为:SELECT COUNT(*) FROM
1、简单形式
得到数据库中顾客数量
var q = db.Customers.Count();
2、带条件形式
得到数据库中未断货产品数量
var q = db.Products.Count(p => !p.Discontinued);
LongCount
说明:返回集合中的元素个数,返回LONG类型;不延迟。对于元素个数较多的集合,可视情况可以选用LongCount来统计元素个数,它返回long类型,比较精确。生成SQL语句为:SELECT COUNT_BIG(*) FROM
var q = db.Customers.LongCount();
Sum
说明:返回集合中数值类型元素之和,集合应为INT类型集合;不延迟。生成SQL语句为:SELECT SUM(…) FROM
1、简单形式
得到所有订单的总运费
var q = db.Products.Sum(p => p.UnitsOnOrder);
2、映射形式
得到所有产品的订货总数
var q = db.Pfoducts.Sum(p => p.UnitsOnOrder);
Min
说明:返回集合中元素的最小值;不延迟。生成SQL语句为:SELECT MIN(…) FROM
1、简单形式
查找任意产品的最低单价
var q = db.Pfoducts.Select(p => p.UnitPrice).Min();
2、映射形式
查找任意订单中最低运费
var q =db.Orders.Min(o =>o.Freight);
3、元素
查找每个类别中单价最低的产品
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
1、简单形式
查找任意雇员的最近雇佣日期
var q = db.Employees.Select(e => e.HireDate).Max();
2、映射形式
查找任意产品的最大库存量
var q = db.Products.Mas(p => p.UnitsInStock);
3、元素
查找每个类别中单价最高的产品
var categories =
from p in db.Products
group p by p.CategoryID into g
select new {
g.Key,
MostExpensiveProducts =
from p2 in g
where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
select p2
};
Avg
说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为double; 不延迟。生成SQL语句为:SELECT AVG(…) FROM
1、简单形式
得到所有订单的平均运费
var q = db.Orders.Select(o => o.Freight).Average();
2、映射形式
得到所有产品的平均单价
var q = db.Products.Average(p => p.UnitPrice);
3、元素
查找每个类别中单价高于该类别平均单价的产品
var categories=
from p in db.Products
group p by p.CategoryID into g
select new
{
g.Key,
ExpensiveProducts =
from p2 in g
where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)
select p2
};
Aggregate
说明:根据输入的表达式获取聚合值;不延迟。也就是说,用一个种子值与当前元素,通过指定的函数来进行对比来遍历集合中的元素,符合条件的元素保留下来。如果没有指定种子值得话,种子值默认为集合得第一个元素。
解释:种子值, 一般说的是随机数种子。 也就是函数srand的参数。C语言 或者说大多数编程语言的随机数是伪随机数, 如果不设置种子,那么每次启动程序获得的rand()序列是相同的。设置一个随机数种子, 可以改变这种情况。 常见的是用当前时间做种子。 即 srand ( time ( NULL ) ) ;
总结Linq to SQL
操作符 | 作用 | 是否延迟 |
---|---|---|
Where | 过滤 | 延迟 |
Select | 选择 | 延迟 |
Distinct | 查询不重复的结果集 | 延迟 |
Count | 返回集合中的元素个数,返回int类型 | 不延迟 |
LongCount | 返回集合中的元素个数,返回LONG类型 | 不延迟 |
Sum | 返回集合中数值类型元素之和,集合应为INT类型集合 | 不延迟 |
Min | 返回集合中元素的最小值 | 不延迟 |
Max | 返回集合中元素的最大值 | 不延迟 |
Average | 返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为double | 不延迟 |
Aggregate | 根据输入的表达式获取聚合值 | 不延迟 |