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的一组实验的更多相关文章

  1. PowerShell调用jira rest api实现jira统计自动化

    通过调用JIRA Rest web api实现统计自动化,首先进行登录模拟: $content = @{username='用户名';password='密码'} $JSON=$content|con ...

  2. JS里面匿名函数的调用 & 变量作用域的实验

    参考 http://www.educity.cn/wenda/54753.html 已实验验证结果正确. 1.下列哪些正确?(B.C) A.function(){ alert("Here!& ...

  3. Powershell调用静态方法

    Powershell将信息存储在对象中,每个对象都会有一个具体的类型,简单的文本会以System.String类型存储,日期会以System.DateTime类型存储.任何.NET对象都可以通过Get ...

  4. 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法

    比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>&g ...

  5. 系统功能调用Windows操作系统原理实验

    一.实验目的 1.熟悉操作系统的系统功能调用. 2.掌握用C语言实现系统功能调用的方法和步骤. 3.掌握利用10H号功能调用(BIOS的显示I/O功能调用)来实现对屏幕的操作与控制. 二.实验内容 1 ...

  6. 【手记】走近科学之为什么JObject不能调用LINQ扩展方法

    Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>> ...

  7. 一句powershell调用mimikatz抓密码

    mimikatz神器大家都知道吧,可以抓取系统内的明文密码,但是平时我们测试的时候需要把mimikatz的几个文件上传到目标系统上面,然后再手工执行几个命令才能搞定,今天无意访问一个大神的博客,发现其 ...

  8. C++ 构造函数 隐式转换 深度探索,由‘类对象的赋值操作是否有可能调用到构造函数’该实验现象引发

    Test1 /** Ques: 类对象的赋值操作是否有可能调用到构造函数 ? **/ class mystring { char str[100]; public: mystring() //myst ...

  9. 【Azure 环境】用 PowerShell 调用 AAD Token, 以及调用Azure REST API(如资源组列表)

    问题描述 PowerShell 脚本调用Azure REST API, 但是所有的API都需要进行权限验证.要在请求的Header部分带上Authorization参数,并用来对List Resour ...

随机推荐

  1. SpringColud Eureka的服务注册与发现

    一.Eureka简介 本文中所有代码都会上传到git上,请放心浏览 项目git地址:https://github.com/839022478/Spring-Cloud 在传统应用中,组件之间的调用,通 ...

  2. 技术周刊 · Lighthouse 测试报告生成

    登高远眺 天高地迥,觉宇宙之无穷 基础技术 Lighthouse 测试内幕 文章分享了网易云音乐前端性能监控平台使用 Lighthouse 的实践经验,介绍了 Lighthouse 的测试流程.内部模 ...

  3. centos7搭建EFK

    环境: system: CentOS Linux release 7.7.1908 elasticsearch: elasticsearch-7.5.1-1.x86_64 kibana: kibana ...

  4. QT creator视频教程分享

    Qt Creator快速入门(第3版) [霍亚飞著] 完整pdf扫描版[92MB] 附随书源码,资源收集于网络,供参考 https://pan.baidu.com/s/1pLQdIUR kjaf ht ...

  5. 尚硅谷ajax视频教程1

    1.+尚硅谷_佟刚_Ajax_概述.wmv 2.+尚硅谷_佟刚_Ajax_使用+XMLHttpRequest+实现+Ajax.wmv XMLHttpRequest 对象提供了对 HTTP 协议的完全的 ...

  6. MySQL8.0窗口函数实践及小结

    MySQL8.0之前,做数据排名统计等相当痛苦,因为没有像Oracle.SQL SERVER .PostgreSQL等其他数据库那样的窗口函数.但随着MySQL8.0中新增了窗口函数之后,针对这类统计 ...

  7. 入门大数据---Spark_Structured API的基本使用

    一.创建DataFrame和Dataset 1.1 创建DataFrame Spark 中所有功能的入口点是 SparkSession,可以使用 SparkSession.builder() 创建.创 ...

  8. dart快速入门教程 (2)

    2.变量和数据类型 2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作是一个水果篮,里面可以装苹果.梨.香蕉等,常量就是一个固定的值,和变量是相对的,变量可以 ...

  9. github Pull Request合入全流程介绍

    图解全流程 详细步骤 1. fork仓库 2. clone fork仓库到本地 3. 关联upstream原仓库 在fork本地仓库输入下面命令进行关联: git remote add upstrea ...

  10. Python-使用tkinter实现的Django服务进程管理工具

    import tkinter import subprocess import os import time import re import sys from tkinter import Labe ...