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()
为什么要重新初始化构造函数中的变量
字段?它已经初始化了。