LINQ扩展库Ix.NET

来源:互联网 发布:餐饮股份怎么算法 编辑:程序博客网 时间:2024/05/16 07:50

Ix.NET

Ix.NET库是Reactive Extension的一部分。这个库在System.Interactive程序集内提供了一些针对LINQ的扩展。使用Visual Studio的NuGet包管理器搜索Ix-Main可以下载并管理这个库。
下载之后工程会自动添加对System.Interactive程序集的引用,并且Ix.NET中对于LINQ的扩展均位于System.Linq名字空间内,因此不需要额外的引用其他名字空间就可以使用这些扩展了。
下面让我们来看看Ix.NET库中针对LINQ的扩展。

ForEach方法

说明:针对序列元素的ForEach方法。

Generate方法

说明:通过模拟循环来生成序列。

// 生成斐波那契数列中前10个数:[0,1,1,2,3,5,8,13,21,34]EnumerableEx.Generate(    new { v1 = 0, v2 = 1 },                     // initial    _ => true,                                  // condition    a => new { v1 = a.v2, v2 = a.v1 + a.v2 },   // iterate    a => a.v1                                   // resultSelector).Take(10).ForEach(Console.WriteLine);

MaxBy方法,MinBy方法,Distinct方法

说明:通过比较键值来返回具有最大(最小,不同)键值的元素序列。

// 返回绝对值最大的元素序列[4,-4]new[] { 1, -2, 3, 4, -4 }.MaxBy(Math.Abs);// 返回除以4余数最小的元素序列[1,5]new[] { 1, 2, 3, 5 }.MinBy(x => x % 4);// 返回除以5余数首次出现时的元素序列[0,1,2,3,4]Enumerable.Range(0, 10).Distinct(x => x % 5);

IgnoreElements方法

说明:返回源序列所对应的空序列。

Return方法

说明:返回由单个元素所组成的序列。

IsEmpty方法

说明:判断序列是否为空。

// 序列[1,2,3]所对应的空序列为空,返回Truenew[] { 1, 2, 3 }.IgnoreElements().IsEmpty();// 序列[3]不为空,返回FalseEnumerableEx.Return(3).IsEmpty();

DistinctUntilChanged方法

说明:比较相邻元素的键值,返回去除重复元素后的序列。

// 返回序列[1,2,3,4,3,4]new[] { 1, 1, 2, 2, 2, 3, 4, 3, 4 }.DistinctUntilChanged();

Scan方法

说明:应用聚合函数,给出所有的中间结果组成的序列。

// 返回序列[1,3,6,10]new[] { 1, 2, 3, 4 }.Scan((acc, x) => acc + x)
0 0
原创粉丝点击