lambda 常用集合扩展及Linq 的一些常规语法
集合Demo:
var digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
var numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
1、Where 查询 (查询大于5的数值)
var result = numbers.Where(item=> item > 5);
var result = from n in numbers.Where(item=> item > 5) select n;
6,7,8,9
2、Select 选择(将集合中的对象进行转换为一个新的对象或值)
var result = numbers.Select(item=> new { item +1 });
numbers.Select(item=> item.ToString()); 将对象里面的值转换为 String
var result = from n in numbers select n+1;
6,5,2,3.......
3、SelectMany 多集合选择
跟 Select 的区别:主要是应用于多个集合的转换,或是一个集合中包含N个集合的转换;
4、Take 取集合中的总数;
var result = numbers.Take(3);
5,4,1
5、Skip 跳过的数量;跟 Take 合起来使用可进行分页处理
var result = numbers.Skip(8); //跳过前面 8个
2,0
6、OrderBy 正序排列,类似Sql 中的 Asc
7、OrderByDescending 倒序排队,类型Sql 中的 Desc
8、ThenBy 用于多个属性的正序排列;
9、ThenByDescending 用于多个属性的倒序排队;
10、Reverse 翻转排列;
11、Group 分组;
12、Distinct 去重;
13、Union 联合;联合两个集合同不重复的数据;
14、Intersect 相交; 两个集合是相交的数据;
15、Except 不相交/除;两个集合中不相交的数据;
16、ToArray 将集合转换为 数组;
17、ToList 将集合转换为 List 集合;
18、ToDictionary 将集合转换字典;
19、OfType 只返回指定类型的数据;
20、First 返回集合的第一个对象;
21、FirstOrDefault 返回集合的第一个对象,如果不存在返回 对象的默认值;
22、ElementAt 返回指定索引的元素,如果索引超过集合长度,则抛出异常;
23、ElementAtOrDefault 返回指定索引的元素,如果索引超过集合长度,则返回对象默认值;
24、Range 用于生成指定范围内的整数的序列。它需要两个参数,第一个参数是序列开始的整数值,第二个参数是序列中整数的数量。

25、Repeat 用于生成包含一个重复值的集合。它需要两个参数,第一个参数是任意类型的元素,第二个参数是生成的序列中所包含此元素的数量。下面的示例演示了使用Repeat来生成一个包含10个0的序列:
var q = Enumerable.Repeat(0, 10);

26、Any 返回bool,确定集合中是否有任何一个满足条件的对象;
var result = numbers.Any(item=> item > 5); 是否存在大于 5的数据;
27、All 返回 bool,确定集合中所有对象是否都满足指定条件;
28、Count 返回 int, 集合中记录条数;
29、Sum 对数值型数据进行累加,等于总和;
30、Min 求数值型集合中最小的对象;
31、Max 求数值型集合中最大的对象;
32、Average 求数值型集合的平均值;
33、Aggregate 求数值型集合相乘的总值;
34、Concat 连接另一个集合;
36、EqualAll 判断两个集合的值是否完全相对;
37、Combine 对两个集合进行指定委托记算;
public void Linq98() {
int[] vectorA = { 0, 2, 4, 5, 6 };
int[] vectorB = { 1, 3, 5, 7, 8 };
int dotProduct = vectorA.Combine(vectorB, (a, b) => a * b).Sum();
Console.WriteLine("Dot product: {0}", dotProduct);
}
38、Linq 中两个对象关联相询;
from a in db.A join b in db.B
on a.Id = b.AId into temp
from temB in temp.DefaultIfEmpty() //如果关联 B 表为空的话,使用对象的默认值
select new {
id = a.id,
name = temB == null ? "匿名" : temB.name
}
官方文档:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

浙公网安备 33010602011771号