using (NorthwindDataContext db = new NorthwindDataContext())
{
db.Log = Console.Out; //将生成的T-SQL语句输出到控制台中
//方法语法
var q =
db.Categories
.Select(c => c.CategoryName)
.ToArray()
.Aggregate((current, next) => String.Format("{0}、{1}", current, next));
Console.WriteLine(q);
}
如果你对这一过程有些迷惑,那么请参照以下代码:
复制代码 代码如下:
var query =
db.Categories
.Select(c => c.CategoryName)
.ToArray();
string r = String.Empty;
foreach (var item in query)
{
r += "、";
r += item;
}
r = r.Substring(1); //去除第一个顿号
Console.WriteLine(r);
2. Average
求集合中元素的平均值,返回值类型double
3. Count
求集合中元素的个数,返回值类型Int32
4. LongCount
求集合中元素的个数,返回值类型Int64
5. Max
求集合中元素的最大值
6. Min
求集合中元素的最小值
7. Sum
求集合中元素的和
八、集合操作符
LINQ 中的集合操作符是指根据相同或不同集合(或集)中是否存在等效元素来生成结果集的查询操作,一共有4种:
方法名
说明
Distinct
从集合移除重复值。
Except
返回差集,差集是指位于一个集合但不位于另一个集合的元素。
Intersect
返回交集,交集是指同时出现在两个集合中的元素。
Union
返回并集,并集是指位于两个集合中任一集合的唯一的元素。
使用方式均为“集合1.方法名(集合2)”,返回值为运算结果的集合,这里就不演示了。
九、生成操作符
生成是指创建新的值序列。
1. Empty
Empty操作符返回一个指定类型的空集合。这里的空不是null,而是元素数量为0的集合。以下的示例演示了如何创建一个IEnumerable<int>类型的空集合:
var q = Enumerable.Empty<int>();
Console.WriteLine(q == null);
Console.WriteLine(q.Count());
2. DefaultIfEmpty
DefaultIfEmpty将空集合替换为具有默认值的单一实例集合。执行此方法获得的集合将至少含有一个元素,这是因为DefaultIfEmpty方法需要两个参数,第一个参数是一个泛型集合,第二个参数是相应类型的单个元素,如果第一个参数中不含有任何元素,它将返回第二个参数指定的单个元素。如果你使用了DefaultIfEmpty方法的重载方法DefaultIfEmpty<T>(IEnumerable<T> array),如果指定的array集合为空,那么将返回一个类型为T,值为null的单个对象。以下的代码演示了这一过程:
复制代码 代码如下:
using (NorthwindDataContext db = new NorthwindDataContext())
{
db.Log = Console.Out; //将生成的T-SQL语句输出到控制台中
//方法语法
var q =
Enumerable.DefaultIfEmpty
(
db.Employees
.Where(e => e.FirstName.StartsWith("Aaf")) //更改此处的条件可获得不同的集合
, new Employees() { FirstName = "Sunny D.D" }
);
Console.WriteLine(q.Count());
foreach (var item in q)
{
Console.WriteLine(item.FirstName);
}
}
3. Range
Range操作符用于生成指定范围内的整数的序列。它需要两个参数,第一个参数是序列开始的整数值,第二个参数是序列中整数的数量。下面的示例演示了使用Range操作符来生成从0到9的整数序列:
复制代码 代码如下: