在Powershell中,我可以使用列表
执行以下操作$obj = New-Object System.Object
foreach ($item in $list) {
$obj | Add-Member -type NoteProperty -name fname -value $item.firstname
$obj | Add-Member -type NoteProperty -name lname -value $item.lastname
}
$obj
这将打印出带有名字和姓氏的两列。
在C#中,我不知道如何才能做到这一点。我是否需要为每个对象创建自定义类?或者有没有办法在c#中动态地执行此操作,如PowerShell?
我获得的数据是JSON。我可以使用JSON.net迭代结果列表,但我不确定如何将它们放入一个对象中
WriteObject(customObj);
将产生与上面相同的输出。
顺便说一下,这都在PSCmdlet
类中,因此输出将始终转到console / cmd窗口。
答案 0 :(得分:4)
您最好的选择是使用anonymous types。你给的代码(可能)相当于:
var obj = new List<dynamic>();
foreach (var item in list)
obj.Add(new { fname = item.firstname, lname = item.lastname });
//From here, use whatever output method you would like.
要访问这些成员,请使用obj[index].fname
获取fname
index
,obj[index].lname
以获取lname
index
,{ {1}}获得所有obj.Select(item => item.fname)
的{{1}},IEnumerable<string>
获得所有fname
的{{1}}。
答案 1 :(得分:2)
在C#中,您应该在PSObject
上运行,以获得与PowerShell代码相同的结果:
PSObject obj=new PSObject();
obj.Properties.Add(new PSNoteProperty(fname,item.firstname));
obj.Properties.Add(new PSNoteProperty(lname,item.lastname));
WriteObject(obj);