C# 字典字典-IEnumerable在C中的实现#

C# 字典字典-IEnumerable在C中的实现#,c#,linq,dictionary,foreach,ienumerable,C#,Linq,Dictionary,Foreach,Ienumerable,我有一个内部带有字典的“成员类”和一个带有字典的“组类”。现在我想用如下内容创建XML: <group name="Group1 Name"> <member name="Member1 Name">Member1 Value</member> <member name="Member2 Name">Member2 Value</member> </group> <group name="Group2 Name"&

我有一个内部带有
字典的“成员类”和一个带有
字典的“组类”。现在我想用如下内容创建XML:

<group name="Group1 Name">
 <member name="Member1 Name">Member1 Value</member>
 <member name="Member2 Name">Member2 Value</member>
</group>
<group name="Group2 Name">
 <member name="Member3 Name">Member3 Value</member>
 <member name="Member4 Name">Member4 Value</member>
</group>

Member1值
成员2值
成员3值
Member4值
之前,我使用LINQ和Select或foreach循环进行了此操作。但在这里,我在实现GetEnumerator方法时遇到了麻烦。。。我甚至不知道它应该在哪个类中实现?成员还是团体?或者两者都有

在实现它时仍然有错误

public class Member : IEnumerable<Member>
{
    public Dictionary<string, string> variables = new Dictionary<string, string>();

    public Member()
    {
        //list of variables
        this.variables = new Dictionary<string, string>();
    }

    public IEnumerator<Member> GetEnumerator()
    {
        return this.variables.Keys.GetEnumerator();

    IEnumerator IEnumerable.GetEnumerator()
    {
        //forces use of the non-generic implementation on the Values collection
        return ((IEnumerable)variables.Keys).GetEnumerator();
    }


}
公共类成员:IEnumerable
{
公共字典变量=新字典();
公职人员()
{
//变量列表
this.variables=新字典();
}
公共IEnumerator GetEnumerator()
{
返回此.variables.Keys.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator()
{
//强制在值集合上使用非泛型实现
返回((IEnumerable)variables.Keys).GetEnumerator();
}
}

谢谢你的建议:)

好的,多亏了雷内·沃格特,我没有正确理解普查员。他的观点引导我找到了正确的方法。 枚举数是一个“键字段(字符串)”,我可以用来迭代抛出字典,然后选择特定的成员

这是正确的实施:

public class Member: IEnumerable<string>
    {
        public Dictionary<string, string> variables = new Dictionary<string, string>();

        public Member()
        {
            //list of variables
            this.variables = new Dictionary<string, string>();
        }


        public IEnumerator<string> GetEnumerator()
        {
            return this.variables.Keys.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            //forces use of the non-generic implementation on the Values collection
            return ((IEnumerable)variables.Keys).GetEnumerator();
        }  
    }
}
公共类成员:IEnumerable
{
公共字典变量=新字典();
公职人员()
{
//变量列表
this.variables=新字典();
}
公共IEnumerator GetEnumerator()
{
返回此.variables.Keys.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
//强制在值集合上使用非泛型实现
返回((IEnumerable)variables.Keys).GetEnumerator();
}  
}
}

谢谢你的帮助。

小组有字典。我在评论xml代码时遇到了麻烦,我可能意外地删除了这些信息1)我们在谈论哪种语言?c#?2) 您可以展示您的实现尝试吗?您可以随时提问以添加缺少的信息为什么它是
IEnumerable
?我确信
成员
类不会枚举
成员
s。根据您对
GetEnumerator
的实现,您希望继承
IEnumerable
。您所说的“首先”是什么意思。如果你把这些错误信息保密,没有人能帮你!您是否也将声明更改为
public IEnumerator GetEnumerator()
为什么要重新初始化构造函数中的
变量
字段?它已经初始化了。