【发布时间】:2015-05-02 00:41:37
【问题描述】:
一个对象EmployeeInfoDocument 包含一个组列表。每个组都有一份员工名单。我正在尝试使用嵌套的 foreach 循环将值写入 XML 文件。似乎我在内部 foreach 循环中的语法错误。 Visual Studio 给我以下错误:
foreach 语句无法对“InfoObjects.Group”类型的变量进行操作,因为“InfoObjects.Group”不包含“GetEnumerator”的公共定义
如何从组内的每个员工那里提取信息?我对 C# 非常陌生。
任何见解将不胜感激。
namespace InfoObjects
{
public class EmployeeInfoDocument
{
private List<Group> _groups = new List<Group>();
public List<Group> Groups
{
get { return _groups; }
set { _groups = value; }
}
}
public class Group
{
private string _text = string.Empty;
private List<Employee> _info = new List<Employee>
public Group()
{
}
public string Text
{
get {return _text; }
set { _text = value; }
}
public List<Employee> Employees
{
get { return _info }
set { _info = value; }
}
}
public class Employee
{
private string _name = string.Empty;
private string _department = string.Empty;
public Employee()
{
}
public string Name
{
get { return _name;}
set { _name = value;}
}
{
public string Department
{
get { return _department};
set { _department = value;}
}
}
}
namespace UI
{
public partial class Mainform: Form
{
private void OnSave(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.RestoreDirectory = false;
saveFileDialog.InitialDirectory = Assembly.GetExecutingAssembly().Location;
saveFileDialog.Filter = "Employee Files|*.xml";
saveFileDialog.DefaultExt = "xml";
using (saveFileDialog)
{
if (saveFileDialog.ShowDialog(this) != DialogResult.OK)
return;
}
using (XmlWriter xmlw = XmlWriter.Create(saveFileDialog.FileName))
{
EmployeeInfoDocument k = new EmployeeInfoDocument();
List<Group> myList = k.Groups;
xmlw.WriteStartDocument();
xmlw.WriteStartElement("EmployeeInfo");
foreach (Group group in EmployeeInfoMgr.Document.Groups)
{
xmlw.WriteStartElement("Group Name");
xmlw.WriteString(group.Text);
foreach (Employee employee in group)
{
xmlw.WriteStartElement("Employee Name");
xmlw.WriteString(employee.Name);
xmlw.WriteEndElement();
xmlw.WriteStartElement("Employee Department");
xmlw.WriteString(employee.Department);
xmlw.WriteEndElement();
}
xmlw.WriteEndElement();
}
xmlw.WriteEndElement();
xmlw.WriteEndDocument();
}
}
}
}
再次感谢。我已经坚持了好几个小时了。
已编辑:缺少分号(非常抱歉!)
【问题讨论】:
-
顺便说一句,您应该了解默认构造函数(可以删除不做任何事情的无参数构造函数而不影响代码)和自动实现的属性(您的所有属性都是微不足道的 - 您可以在一行代码中实现每一个)。
-
另外,您的示例代码在 很多 处出现语法错误(主要是缺少分号)。请努力展示您感兴趣的问题的代码,而不是其他问题。
-
您的代码仍然无法编译 - 您也错过了括号。理想情况下,您应该提供一个简短但完整的程序,该程序可以复制、粘贴、编译和运行(或查看相关的编译器错误,仅相关错误) .请阅读tinyurl.com/stack-hints
标签: c# xml foreach nested-loops nested-lists