关于PowerShell调用Linq的一组实验
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\> $a = 0..2
PS C:\> $b = 3..5
PS C:\> $a.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{$args[0]+$args[1]})
PS C:\> $c
3
5
7
PS C:\> $c[0]
3
5
7
PS C:\> $c.tostring()
System.Linq.Enumerable+<ZipIterator>d__61`3[System.Object,System.Object,System.Object]
PS C:\> $d = $c | % { $_ }
PS C:\> $d[0]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{ @{ i=$args[0]; j=$args[1] } })
PS C:\> $c
Name Value
---- -----
j 3
i 0
j 4
i 1
j 5
i 2
PS C:\> $c[0]
Name Value
---- -----
j 3
i 0
j 4
i 1
j 5
i 2
PS C:\> $c.i
0
1
2
PS C:\> $c.tostring()
System.Linq.Enumerable+<ZipIterator>d__61`3[System.Object,System.Object,System.Object]
PS C:\> $d = $c | % { $_ }
PS C:\> $d
Name Value
---- -----
j 3
i 0
j 4
i 1
j 5
i 2
PS C:\> $d[0]
Name Value
---- -----
j 3
i 0
PS C:\> $d[0].i
0
PS C:\> $d.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{ ($args[0], $args[1]) })
PS C:\> $c
0
3
1
4
2
5
PS C:\> $c.tostring()
System.Linq.Enumerable+<ZipIterator>d__61`3[System.Object,System.Object,System.Object]
PS C:\> $c[0]
0
3
1
4
2
5
PS C:\> $d = $c | % { $_ }
PS C:\> $d
0
3
1
4
2
5
PS C:\> $d[0]
0
PS C:\> $d[1]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $d = [Linq.Enumerable]::ToArray($c)
PS C:\> $d[0]
0
3
PS C:\> $d[0][0]
0
PS C:\> $d.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, int[]]]{($args[0], $args[1])})
PS C:\> $c[0]
0
3
1
4
2
5
PS C:\> $c.tostring()
System.Linq.Enumerable+<ZipIterator>d__61`3[System.Object,System.Object,System.Int32[]]
PS C:\> $d = $c | % { $_ }
PS C:\> $d[0]
0
PS C:\> $d[1]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $d = [Linq.Enumerable]::ToArray($c)
PS C:\> $d[0]
0
3
PS C:\> $d[0][0]
0
PS C:\> $d.tostring()
System.Int32[][]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{$l = [Collections.Generic.List[int]]::new(); $l.Add($args[0])
; $l.Add($args[1]); $l}) PS C:\> $c[0]
0
3
1
4
2
5
PS C:\> $d = $c | % { $_ }
PS C:\> $d[0]
0
PS C:\> $d[1]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $d = [Linq.Enumerable]::ToArray($c)
PS C:\> $d[0]
0
3
PS C:\> $d[0][1]
3
调用Linq返回的那个类型我不太清楚,但应该是一个实现了IEnumerable的类,不能直接当作数组使用,但可以用For-Object(%)进行迭代。因此可见,当Zip内部匿名函数返回的是非可迭代类型时,可以使用For-Object(%)命令将Zip返回的类转化为由可迭代类型的数组,而当返回的是可迭代类型,使用For-Object(%)命令会将Zip返回的类平摊为一个一维数组,这样就不能达到我们的要求,需要使用[Linq.Enumerable]::ToArray 方法才能将其转化为“二维数组”。
关于PowerShell调用Linq的一组实验的更多相关文章
- PowerShell调用jira rest api实现jira统计自动化
通过调用JIRA Rest web api实现统计自动化,首先进行登录模拟: $content = @{username='用户名';password='密码'} $JSON=$content|con ...
- JS里面匿名函数的调用 & 变量作用域的实验
参考 http://www.educity.cn/wenda/54753.html 已实验验证结果正确. 1.下列哪些正确?(B.C) A.function(){ alert("Here!& ...
- Powershell调用静态方法
Powershell将信息存储在对象中,每个对象都会有一个具体的类型,简单的文本会以System.String类型存储,日期会以System.DateTime类型存储.任何.NET对象都可以通过Get ...
- 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法
比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>&g ...
- 系统功能调用Windows操作系统原理实验
一.实验目的 1.熟悉操作系统的系统功能调用. 2.掌握用C语言实现系统功能调用的方法和步骤. 3.掌握利用10H号功能调用(BIOS的显示I/O功能调用)来实现对屏幕的操作与控制. 二.实验内容 1 ...
- 【手记】走近科学之为什么JObject不能调用LINQ扩展方法
Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>> ...
- 一句powershell调用mimikatz抓密码
mimikatz神器大家都知道吧,可以抓取系统内的明文密码,但是平时我们测试的时候需要把mimikatz的几个文件上传到目标系统上面,然后再手工执行几个命令才能搞定,今天无意访问一个大神的博客,发现其 ...
- C++ 构造函数 隐式转换 深度探索,由‘类对象的赋值操作是否有可能调用到构造函数’该实验现象引发
Test1 /** Ques: 类对象的赋值操作是否有可能调用到构造函数 ? **/ class mystring { char str[100]; public: mystring() //myst ...
- 【Azure 环境】用 PowerShell 调用 AAD Token, 以及调用Azure REST API(如资源组列表)
问题描述 PowerShell 脚本调用Azure REST API, 但是所有的API都需要进行权限验证.要在请求的Header部分带上Authorization参数,并用来对List Resour ...
随机推荐
- MySQL 性能优化细节
服务器层面优化(了解) 将数据保存在内存中,保证从内存读取数据 设置足够大的innodb_buffer_pool_size,将数据读取到内存中. 建议innodb_buffer_pool_size设置 ...
- FFT快速傅里叶变换的python实现
FFT是DFT的高效算法,能够将时域信号转化到频域上,下面记录下一段用python实现的FFT代码. # encoding=utf-8 import numpy as np import pylab ...
- 如何开发一个自己的npm包
目录 一.初始化npm包 二.新建自己的工具类 三.新建入口文件index.js 四.编写单元测试 五.登录仓库 六.发布包 七.安装使用 八.删除包 一.初始化npm包 npm init 运行输入包 ...
- .Net Core 中GC的工作原理
前言 .NET 中GC管理你服务的内存分配和释放,GC是运行公共语言运行时(CLR Common Language Runtime)中,GC可以帮助开发人员有效的分配内存和和释放内存,大多数情况下是不 ...
- Spark HA搭建
正文 下载Spark版本,这版本又要求必须和jdk与hadoop版本对应. http://spark.apache.org/downloads.html tar -zxvf 解压到指定目录,进入con ...
- 关于SPSS Modeler18 提示:用于定义的观测值的字段的值无效
今天在做实验的时候,按照实验步骤严格设置了参数,当运行节点的时候,一直提示:用于定义的观测值的字段的值无效,如下图 我把我的流文件发给同学,同学的机器上是可以运行的,但是我的不行,不知道什么原因,有知 ...
- python从文件载入字典
data = np.load('dict_.npy') data = data.item() 不加最后一句,data不是字典类型
- 基于opencv的车牌提取项目
初学图像处理,做了一个车牌提取项目,本博客仅仅是为了记录一下学习过程,该项目只具备初级功能,还有待改善 第一部分:车牌倾斜矫正 # 导入所需模块 import cv2 import math from ...
- 恕我直言你可能真的不会java第8篇-函数式接口
一.函数式接口是什么? 所谓的函数式接口,实际上就是接口里面只能有一个抽象方法的接口.我们上一节用到的Comparator接口就是一个典型的函数式接口,它只有一个抽象方法compare. 只有一个抽象 ...
- 利用oracle数据库闪回功能将oracle数据库按时间点恢复
oracle更新脚本把原数据冲了,并且没有备份,急煞我也 解决办法: oracle数据库有闪回功能: select * from tab 可以查出已被删除的表 ...