gpt4 book ai didi

c# - 从 ManagementObjectCollection 中的所有对象获取所有非空属性

转载 作者:太空狗 更新时间:2023-10-30 01:32:51 25 4
gpt4 key购买 nike

我试图简化这两个 foreach 循环,但我似乎无法理解。它使用 management 库来获取有关操作系统的信息,大约有 30 个不同的项目,但我只想要一个。目前我正在滚动浏览它们并在弹出时显示我想要的那个。

try
{
ManagementClass Management = new ManagementClass("Win32_OperatingSystem");

foreach (ManagementObject Object in Management.GetInstances())
{
foreach (PropertyData Data in Object.Properties)
{
if (Data.Name.Equals("CSName") && (Data.Value != null))
{
TxtBody.Text += "<br><font color = red>" + Data.Name + ": " + Data.Value + "</font>";
}
}
}
}

我当然可以只放类似 TxtBody.text += Management.PropertyData.CSName 的东西吗?

最佳答案

你为什么不直接使用 the indexer :

foreach (ManagementObject Object in Management.GetInstances())
{
var value = Object["CSName"];
if (value == null)
continue;
TxtBody.Text += "<br><font color = red>" + "CSName" + ": " + value + "</font>";
}

您还可以使用一些 LINQ 和 String.Join 完全避免循环:

var propName = "CSName";

var keyValues = Management
.GetInstances()
.Cast<ManagementObject>()
.Select(obj =>
new
{
name = propName,
value = obj[propName]
})
.Where(obj =>
obj.value != null);

var result =
String.Join(
"",
keyValues
.Select(kv =>
String.Format("<br><font color = red>{0} : {1} </font>", kv.name, kv.value)));

TxtBox.Text += result;

关于c# - 从 ManagementObjectCollection 中的所有对象获取所有非空属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com