- 转换操作(Projection (Transformation) Operations)
Select()
基于转换函数进行获得值。
例如tt.Select(c=> c.val>1)
返回tt集合的每项val是否大于1,如大于1则返回true,否则false。
用法:
var items = from r in records select new RAK { Rank = r.Rank, Name = r.Name };
var names = records.Select(r => r.Name);
SelectMany()
根据转换函数得到的值的序列,将其成为一个序列
用法:
var selectManyResult = dict.SelectMany(kvp => kvp.Value);
var names3 = from kvp in dict from r in kvp.Value select r.Name;
Select()
与SelectMany()
的区别:
var selectResult = dict.Select(kvp => kvp.Value);
foreach (var c in selectResult) {
foreach (var r in c) {
names1.Add(r.Name);
}
}
var selectManyResult = dict.SelectMany(kvp => kvp.Value);
foreach (var r in selectManyResult) {
names2.Add(r.Name);
}
-
单元素操作
ElementAt
返回集合中特定索引位置的元素
用法:
var eAt3 = names.ElementAt(3);
First
返回集合中的第一个元素,或者满足条件的第一个元素
用法:var head = names.First();
var firstT = names.First(n => n.StartsWith("T"));
Last
返回集合最后一个元素,或者满足条件的最后一个元素
用法:var tail = names.Last();
var lastT = names.Last(n => n.StartsWith("T"));
single
返回集合中唯一一个元素,或者满足条件的唯一一个元素,若超过一个或者没有符合条件的会抛出异常
用法:
var singleA = names.Single(n => n.StartsWith("A"));
还有ElementAtOrDefault
、FirstOrDefault
、LastOrDefault
、SingleOrDefault
用法类似,只是它们在没有元素满足条件时会返回默认值,默认值根据元素类型而定,如int返回0。SingleOrDefault
在没有或多个元素满足条件会返回默认值,不会报错。 -
分割操作
Skip
在一个集合中跳到特定位置获取元素
用法:string[] source = { "A1", "A2", "B1", "B2", "C1", "C2" }; var r3 = source.Skip(2); //B1 B2 C1 C2
以上是学习edx中的Data Querying Using LINQ and C#课程的笔记