这是目前的情况。
我有一个WPF表单,其中有一个组合框,可以从中选择任何一个Win 32类。在那之下,我有一个数据网格,其中一个可以放置许多属性中的一个。
例如,对于Win32_Volume,可以放入DeviceID,DriveLetter,SerialNumber等。它们可以填充任意数量的属性,然后应用程序必须运行查询测试,如果系统中存在任何对象符合标准/标准。
由于允许用户填写任意数量的属性,因此我很难构建查询。
我尝试过:
这是我到目前为止所做的尝试。
我已经构建了一个字典,其中PropertyName作为键,用户输入作为值。
代码隐藏是这样的:
l1 = 3
l2 = 3
set.seed(1000)
y1 <- matrix(rnorm(l1*l2),l1,l2)
y2 <- matrix(rnorm(l1*l2),l1,l2)
desired_output_if_no_NA <- (y1+y2)/2
y1[1,2] <- NA
y2[2,1] <- NaN
desired_output <- ?
GetObject接受包含Propertyname,value元组的classname和字典。然后它获取该类的所有实例,然后对它们运行LINQ查询。
请注意,我只想要一个符合条件的实例,因此private ManagementObjectCollection GetObjectsOfClass(string classname)
{
var objectcollection = new ManagementObjectSearcher("SELECT * FROM " + classname).Get();
return objectcollection;
}
private ManagementObject GetObject(string classname, Dictionary<string,string> conditions)
{
var query = GetObjectsOfClass(classname).Cast<ManagementObject>();
foreach(var condition in conditions)
{
query = query.Where(test => test.Properties[condition.Key].Value.ToString().Contains(condition.Value));
}
return query.FirstOrDefault();
}
。
然而,这种方法有一种令人讨厌的代码味道。有没有什么方法可以放弃这个字典和foreach循环,只使用LINQ完成整个过程?