Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不知道列名或类型的情况下,将DataTable转换为适合powershell的输出_C#_Linq_Powershell_Datatable - Fatal编程技术网

C# 在不知道列名或类型的情况下,将DataTable转换为适合powershell的输出

C# 在不知道列名或类型的情况下,将DataTable转换为适合powershell的输出,c#,linq,powershell,datatable,C#,Linq,Powershell,Datatable,我有一个api调用,它在C中返回一个DataSet对象。我所要做的就是从我正在开发的cmdlet返回此数据到powershell,以便在管道上使用,但我真的不想手动执行此操作,因为底层api可以动态更改 DataSet/DataTable等的所有示例都使用linq,但它们总是指定列名——我在设计时没有这样的特权 我真的不知道最好的方法是什么,因为我不是一个c开发人员,所以我真的不知道该搜索什么术语,所以我可以返回WriteObjectds.Tables[0]的指针;以一种可以在powershel

我有一个api调用,它在C中返回一个DataSet对象。我所要做的就是从我正在开发的cmdlet返回此数据到powershell,以便在管道上使用,但我真的不想手动执行此操作,因为底层api可以动态更改

DataSet/DataTable等的所有示例都使用linq,但它们总是指定列名——我在设计时没有这样的特权

我真的不知道最好的方法是什么,因为我不是一个c开发人员,所以我真的不知道该搜索什么术语,所以我可以返回WriteObjectds.Tables[0]的指针;以一种可以在powershell中使用而不必操作数据表的方式,我们将不胜感激

谢谢

大卫

编辑:

无法将我的评论正确发布

所以我是这样做的:

PSObject ps = new PSObject();
foreach (DataRow dtRow in ds.Tables[0].Rows)
{
    foreach (DataColumn dc in ds.Tables[0].Columns)
    {
        ps.Members.Add(new PSNoteProperty(dc.ColumnName, dtRow[dc].ToString()));
    }
}
WriteObject(ps);

对于datatable列,您始终可以使用索引[?]而不是名称。您还可以从dt.columns中的columns属性foreach DataColumn dc提取名称。然后是dc.ColumnName。对于linq,字符串[]name=dt.Columns.Cast.Selectx=>x.ColumnName.ToArray;不确定这是否是最好的方式,但我已经按照我第一篇文章的编辑让它工作了,因为我无法正确格式化这篇评论。