2013-04-04 148 views
0

我得到用户属于对象数组的安全组列表。我使用DirectoryEntry获取活动目录属性,其中一个属性为“memberOf”(de.properties [“memberOf”] .value)。返回值是一个“对象数组”。这个对象数组中的每个元素看起来像:搜索对象列表

"CN=SITE_MAINTENANCE,OU=CMS,OU=SD,OU=ESM,OU=Engineering Systems,DC=usa,DC=abc,DC=domain,DC=com" 

我可以通过元素,铸就每一个元素为“串”和搜索这种方式循环。我只是觉得可能有一个更简单的方法,不需要循环。 我需要能够找到其中有OU = CMS的人员。

谢谢。

+0

你的问题不清楚。你发布的字符串是如何与对象数组相关的?它是一个如上所示的字符串列表吗? – 2013-04-04 03:38:11

+0

DirectoryEntry返回的“memberOf”是“object []”。但是当我检查它时,数组中的每个条目(对象)看起来都像我发布的字符串。因为它是object [],所以我不能做任何字符串函数。正如我所说,我可以遍历每个元素,将每个元素都作为字符串进行搜索,并以这种方式进行搜索,但认为这有点更智能。 – NoBullMan 2013-04-11 21:43:39

+0

好吧,如果它返回一个'object []',那么你可以做的事情就不多了。我猜这个API不是很直观。 – 2013-04-11 22:11:42

回答

2

循环访问数组,然后使用indexOf或Regexp搜索字符串“OU = CMS”。如果它存在于字符串中,那么你“找到了其中包含OU = CMS的那个。”

你可以做任何事情,如投掷物品到一个新的列表或任何你想要的。

0
list.Where(a=>a.ToString().Contains("OU=CMS")).ToList(); 
0

您可以像使用如下

string listString="CN=SITE_MAINTENANCE,OU=CMS,OU=SD,OU=ESM,"+ 
        "OU=Engineering Systems,DC=usa,DC=abc,DC=domain,DC=com" 

使用LINQ:

listString.Split(',').Contains("OU=CMS") 

W/O LINQ:

Array.IndexOf(listString.Split(','), "OU=CMS") >= 0 
+0

我所拥有的是一个对象数组,数组中的每个元素都是我作为示例包含的字符串。我从DirectoryEntry(de.properties [“memberOf”])得到这个结果,它返回一个对象数组。 – NoBullMan 2013-04-04 04:39:27

+0

你能编辑你的问题与这些细节。意思是什么在你的数组对象等 – 2013-04-04 04:44:51

+0

我编辑的问题 – NoBullMan 2013-04-04 13:15:22

0

你可以搜索通过foreach循环

所需的值
+0

更详细一点,将有助于OP – Anthon 2013-04-04 05:00:12