首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从PowerShell中的数据表中选择数据

从PowerShell中的数据表中选择数据
EN

Stack Overflow用户
提问于 2015-11-07 12:41:21
回答 1查看 6K关注 0票数 1

我正在努力弄清楚如何从Datatable中获取我需要的数据。我对可数据数据很陌生,无法通过阅读文档来正确构建所需的查询。

我用PowerShell编写了一个测试脚本,发布如下:

代码语言:javascript
复制
# clear the screen:
CLS

# Create the Datatable:
$dt1 = New-Object System.Data.Datatable

# Name the datatable:
$dt1.TableName = "MyTable"

# Add collumns to the table:
[void]$dt1.Columns.Add("datacolumnone")
[void]$dt1.Columns.Add("datacolumntwo")
[void]$dt1.Columns.Add("datacolumnthree")

# Add data:
[void]$dt1.Rows.Add([string]"id 1", [string]"fact 1", [string]"purple")
[void]$dt1.Rows.Add([string]"id 1", [string]"fact 2", [string]"black")
[void]$dt1.Rows.Add([string]"id 1", [string]"fact 3", [string]"green")
[void]$dt1.Rows.Add([string]"id 1", [string]"fact 4", [string]"green")
[void]$dt1.Rows.Add([string]"id 2", [string]"fact 1", [string]"blue")
[void]$dt1.Rows.Add([string]"id 2", [string]"fact 2", [string]"yellow")
[void]$dt1.Rows.Add([string]"id 2", [string]"fact 3", [string]"purple")
[void]$dt1.Rows.Add([string]"id 2", [string]"fact 4", [string]"yellow")
[void]$dt1.Rows.Add([string]"id 3", [string]"fact 1", [string]"purple")
[void]$dt1.Rows.Add([string]"id 3", [string]"fact 2", [string]"black")
[void]$dt1.Rows.Add([string]"id 3", [string]"fact 3", [string]"green")
[void]$dt1.Rows.Add([string]"id 3", [string]"fact 4", [string]"yellow")
[void]$dt1.Rows.Add([string]"id 4", [string]"fact 1", [string]"purple")
[void]$dt1.Rows.Add([string]"id 4", [string]"fact 2", [string]"yellow")
[void]$dt1.Rows.Add([string]"id 4", [string]"fact 3", [string]"purple")
[void]$dt1.Rows.Add([string]"id 4", [string]"fact 4", [string]"yellow")

# Write the data to a xml and data file:
$dt1.WriteXmlSchema('.\CacheSchema.xsd')
$dt1.WriteXml(".\CacheData.xml")

##############################
# End of this script         #
# Going on with the next one #
##############################

# Set the search criteria:
$column1 = ""
$column2 = "fact 1"
$column3 = "purple"

# build the query:
$qquery1 = "
        datacolumnone like '%"+$column1+"%' 
    AND datacolumntwo like '%"+$column2+"%'
    AND datacolumnthree like '%"+$column3+"%'
";

# Create the Datatable:
$dt2 = New-Object System.Data.Datatable

# Load the data:
[void]$dt2.ReadXmlSchema(".\CacheSchema.xsd")
[void]$dt2.ReadXml(".\CacheData.xml")

# Run the query:
$dt2.Select($qquery1)

现在我想要实现的是:

  1. 从具有值的行中查找所有id (datacolumnone):“datacolumntwo 2”中的“事实1”和“datacolumntwo三”中的“紫色”
  2. 然后进一步过滤id中的"datacolumnone“在上面查询的结果中,”datacolumn-2“是”事实4“,”datacolumn3“是”黄色“
  3. 然后,当我们有经过过滤的id时,在"datacolumntwo“中显示上面过滤的查询中的id和”datacolumntwo值“事实2中的行。

https://msdn.microsoft.com/en-us/library/system.data.datatable.select%28v=vs.110%29.aspx

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 23:51:21

如果我正确理解这个问题,查询DataTable与使用管道选择符合某些条件的行相同:所以,查询之一是:

$results1 = $dt $results1 Object {$.datacolumntwo -eq“-eq 1”-and $.datacolumnthree -eq“紫色”}选择Id

而query2将是:

$results2 = $dt $result1 Object {$.datacolumnone -in $result1 -and $.datacolumntwo -eq“事实4”-and $_.datacolumnthree -eq“黄色”}

或者,如果不需要中间结果,则可以组合这两个查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33582881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档