linq

操作符 类别 语义 示例
Where 筛选操作符(Restriction) Where(Predicate) Dim lowNums = numbers.Where(Function(num) num < 5)
Select 投影操作符(Projection) Select(匿名函数) Dim lowNums = numbers.Select(Function(num) num*num)
SelectMany 投影操作符(Projection) 返回多行结果,用于多表的交叉连接(cross join) Dim res = Employees.SelectMany(Function(e) e.Family.Select(Function(c)c.name))
Skip 分块操作符(Partitioning) 跳过前n个元素 Dim res=data.Skip(4)
SkipWhile 分块操作符(Partitioning) 跳过起始处使条件为真的所有元素 Dim res=data.SkipWhile(Function(i) i%2 = 0)
Take 分块操作符(Partitioning) 返回开头之处的n个元素 Dim res=data.Take(3)
TakeWhile 分块操作符(Partitioning) 返回起始处使条件为真的所有元素 Dim res=data.TakeWhile(Function(i) i%3 = 0)
Join 连接操作符 内连接两个或多个表,仅限于Equals运算符 from sup in suppliers join cust in customers on sup.Country equals cust.Country
GroupJoin 连接操作符 类似于LEFT OUTER JOIN,右侧集合匹配于左侧集合键值的元素被分组 From cust In customers Group Join ord In orders On cust.CustomerID Equals ord.CustomerID Into CustomerOrders = Group, OrderTotal = Sum(ord.Total)
Concate 合并操作符 用于连接两个序列 returnValue = firstSeq.Concat(secondSeq)
OrderBy 排序操作符(Ordering)   Dim query As IEnumerable(Of Person) = Persons.OrderBy(Function(p) p.Age)
OrderByDescending 排序操作符(Ordering)    
ThenBy 排序操作符(Ordering)    
ThenByDescending 排序操作符(Ordering)    
Reverse 排序操作符(Ordering)    
GroupBy 分组操作符   Dim numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0} Dim numberGroups = From num In numbers Group num By remainder5 = (num Mod 5) Into numGroup = Group Select New With {.Remainder = remainder5, .numbers = numGroup}
Distinct 集合操作符 去重复  
Union 集合操作符 集合并  
Intersect 集合操作符 集合交  
Except 集合操作符 集合差  
AsEnumerable 转换操作符 用于把一个IEnumerable的派生类型转化为IEnumerable类型  
AsQueryable 转换操作符 IEnumerable(Of T)转化为IQueryable(Of T).  
ToArray 转换操作符 转换为数组  
ToList 转换操作符 转换为List  
ToDictionary 转换操作符 转换为一对一的字典(键-值对的集合)  
ToLookup 转换操作符 转换为一对多的字典(键-值集的集合)  
OfType 转换操作符 获取指定类型的元素组成一个数组 object[] numbers = { null, 1.0, "two", 3, "four", 5, "six", 7.0 }; var doubles = numbers.OfType<double>();
Cast 转换操作符 把序列的所有元素转换为指定类型  
SequenceEqual 相等操作符 两个序列的元素依次相同返回真。使用元素所属类的IEqualityComparer(Of T) 泛型界面做相等比较  
First 元素操作符 返回序列第一个元素(或满足条件第一个元素),没有则异常  
FirstOrDefault 元素操作符 返回序列第一个元素,没有则返回空或默认值  
Last 元素操作符 返回序列最后一个元素,没有则异常  
LastOrDefault 元素操作符 返回序列最后一个元素,没有则返回空或默认值  
Single 元素操作符 返回序列唯一元素,如果没有元素或多个元素则异常  
SingleOrDefault 元素操作符 返回序列唯一元素,如果没有元素或多个元素则空或默认值  
ElementAt 元素操作符 返回序列指定元素,失败则异常  
ElementAtOrDefault 元素操作符 返回序列指定元素,失败则空或默认值  
DefaultIfEmpty 元素操作符 返回序列,如果序列为空则返回元素的默认值 For Each number As Integer In numbers.DefaultIfEmpty()〈br> output.AppendLine(number) Next
All 序列元素数量操作符 序列所有元素满足条件则为真  
Any 序列元素数量操作符 序列有一个元素满足条件则为真  
Contains 序列元素数量操作符 是否包含一个元素  
Count 统计操作符 计数,可选一个谓词 int oddNumbers = numbers.Count(n => n% 2 == 1);
LongCount 统计操作符 计数,返回Int64类型  
Sum 统计操作符 求和,可选对一个lambda函数表达式 double totalChars = words.Sum(w => w.Length);
Min 统计操作符 最小值,可选对一个lambda函数表达式 int shortestWord = words.Min(w => w.Length);
Max 统计操作符    
Average 统计操作符    
Aggregate 统计操作符 参数为一个委托,在序列的每个元素上执行该委托。委托的第一个参数为当前累计值,第二个参数为当前元素,返回值为新的累计值 Dim reversed As String = words.Aggregate(Function(ByVal current, ByVal word) word & " " & current)
equals/Equals 关键字 用于Join子句  
from/From 关键字    
in/In 关键字 指出数据源  
into/Into 关键字 用于Group By子句  
key 关键字 用于Group By子句的无名类型  
let 关键字 给表达式定义别名 From prod In products Let Discount = prod.UnitPrice * 0.1 Where Discount >= 50 Select prod.ProductName, prod.UnitPrice, Discount
Group 关键字 在GroupBy子句的Into中用于辨识分组结果 From num In numbers Group num By remainder5 = (num Mod 5) Into Group
Range 方法 产生一个整数序列 From n In Enumerable.Range(100, 50)
Repeat 方法 产生一个整数序列 From n In Enumerable.Repeat(7, 10)
上一篇:【优化算法】黑洞模拟算法(MVO)【含Matlab源码 479期】


下一篇:【优化算法】蝗虫优化算法(GOA)【含Matlab源码 936期】