1

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();
}

Children.Find()これの問題は、whereステートメントで使用できないことです。

これを正しく行う方法を知りたいのですが、他にも必要なクエリがあるので、これを理解できるようにしたいと思っています。したがって、誰かがこの情報を見つけるための良い情報源を知っているなら、私に知らせてください

4

1 に答える 1

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;
        }
    }
}
于 2012-09-26T10:23:52.930 に答える