C# 使用linq和c将列表框项另存为xml文件中的子项#

C# 使用linq和c将列表框项另存为xml文件中的子项#,c#,xml,linq,C#,Xml,Linq,我有一个相对简单的Winforms应用程序,正在使用C#。我一直在使用LINQ(system.xml.LINQ)。。。我已成功地将文本框项目(单个项目)保存到我的xml文件中 我有一个项目列表框,希望该列表保存为xml文件中的子节点。因此,我的xml最终输出将如下所示: <items> <centerName>My Center</centerName> <poc>Mr. Jones</poc> <servicedUnits

我有一个相对简单的Winforms应用程序,正在使用C#。我一直在使用LINQ(system.xml.LINQ)。。。我已成功地将文本框项目(单个项目)保存到我的xml文件中

我有一个项目列表框,希望该列表保存为xml文件中的子节点。因此,我的xml最终输出将如下所示:

<items>
 <centerName>My Center</centerName>
 <poc>Mr. Jones</poc>
 <servicedUnits>
    <state>Texas</state>
    <state>Iowa</state>
    <state>Hawaii</state>
 </servicedUnits>
</items>
谢谢你的任何想法


ER

假设列表框的项目是字符串,则可以执行以下操作:

private void writeFCATSettings()
{
    XDocument doc = new XDocument(
        new XElement("Items",
            new XElement("textBoxCenterName", textBoxCenterName.Text),
            new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),   
            new XElement("servicedUnits", 
                listBoxServicedUnits
                .Items
                .OfType<string>()
                .Select(item => new XElement("unit", item)))));
    doc.Save(@"Settings.xml");
}
private void writeFCATSettings()
{
    XDocument doc = new XDocument(
        new XElement("Items",
            new XElement("textBoxCenterName", textBoxCenterName.Text),
            new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),   
            new XElement("servicedUnits", 
                listBoxServicedUnits
                .Items
                .OfType<Object>()
                .Select(x => TransformYouObjectToAStringHere)
                .Select(item => new XElement("unit", item)))));
    doc.Save(@"Settings.xml");
}
private void writeFCATSettings()
{
XDocument doc=新XDocument(
新XElement(“项目”,
新XElement(“textBoxCenterName”,textBoxCenterName.Text),
新的XElement(“textBoxContactFirstName”,textBoxContactFirstName.Text),
新XElement(“servicedUnits”,
listBoxServicedUnits
.项目
第()类
.选择(项目=>新的元素(“单位”,项目‘‘‘)’);
doc.Save(@“Settings.xml”);
}
或者,如果它们不是字符串或是混合类型,则可以执行以下操作:

private void writeFCATSettings()
{
    XDocument doc = new XDocument(
        new XElement("Items",
            new XElement("textBoxCenterName", textBoxCenterName.Text),
            new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),   
            new XElement("servicedUnits", 
                listBoxServicedUnits
                .Items
                .OfType<string>()
                .Select(item => new XElement("unit", item)))));
    doc.Save(@"Settings.xml");
}
private void writeFCATSettings()
{
    XDocument doc = new XDocument(
        new XElement("Items",
            new XElement("textBoxCenterName", textBoxCenterName.Text),
            new XElement("textBoxContactFirstName", textBoxContactFirstName.Text),   
            new XElement("servicedUnits", 
                listBoxServicedUnits
                .Items
                .OfType<Object>()
                .Select(x => TransformYouObjectToAStringHere)
                .Select(item => new XElement("unit", item)))));
    doc.Save(@"Settings.xml");
}
private void writeFCATSettings()
{
XDocument doc=新XDocument(
新XElement(“项目”,
新XElement(“textBoxCenterName”,textBoxCenterName.Text),
新的XElement(“textBoxContactFirstName”,textBoxContactFirstName.Text),
新XElement(“servicedUnits”,
listBoxServicedUnits
.项目
第()类
.选择(x=>TransformYouObjectToAStringHere)
.选择(项目=>新的元素(“单位”,项目‘‘‘)’);
doc.Save(@“Settings.xml”);
}

您在
列表框servicedUnits.Items中有什么?字符串?我得到以下错误:错误1'System.Windows.Forms.ListBox.ObjectCollection'不包含'Select'的定义,并且找不到接受'System.Windows.Forms.ListBox.ObjectCollection'类型的第一个参数的扩展方法'Select'(是否缺少using指令或程序集引用?),
ItemCollection
仅继承
IEnumerable
而不是
IEnumerable
。我将很快更新答案。非常感谢您的帮助…我为我缺乏编码技能而道歉…但我不确定在您的解决方案中,如果您有“TransformYouObjectToStringhere”,需要做什么…您需要将其替换为某种函数,该函数可以采用
x
的任何类型,并创建
字符串
。最明显的例子是
x.ToString()
。列表框的项目是什么类型的对象?很好,谢谢。。。列表框项目是文本字符串…它工作得很好。谢谢你的帮助。