动态构建WMI的LINQ查询

时间:2017-02-19 21:30:44

标签: c# wpf linq

这是目前的情况。

我有一个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完成整个过程?

0 个答案:

没有答案