我试图绕过LINQ,所以我可以弄清楚如何查询DirectoryEntry
。目前我正在尝试在C#中编写一些代码,这些代码将采用字符串变量并根据此字符串给出组内成员的列表。
以下是我到目前为止所设想的内容
public static string[] GetAllUsersInGroup(string groupname)
{
var names = new List<string>();
var path = string.Format("WinNT://{0},computer", Environment.MachineName);
var computerEntry = new DirectoryEntry(path);
if (computerEntry != null)
{
using (computerEntry)
{
var menberNames = from DirectoryEntry childEntry
in computerEntry.Children.Find("testgroup", "group")
where childEntry.SchemaClassName == "User"
select childEntry.Name;
foreach (var name in memberNames)
{
names.Add(name);
}
}
}
return names.ToArray();
}
这个问题是我不能在where语句中使用Children.Find()
。
虽然我想知道如何正确地做到这一点,但我真的希望能够解决这个问题,因为我还需要做其他查询。因此,如果有人知道任何GOOD来源找到这些信息,请告诉我
答案 0 :(得分:1)
我对此并不十分确定。试试它是否适合你。
public static string[] GetAllUsersInGroup(string groupname)
{
var path = string.Format("WinNT://{0},computer", Environment.MachineName);
using (var computerEntry = new DirectoryEntry(path))
{
if (computerEntry != null)
{
return
computerEntry.Children.SelectMany(childEntry =>
ChildEntry.Children.Find("Administrators", "group")
.Children.Select(child => child.Name))
.ToArray();
}
else
{
return null;
}
}
}