如何在c#中向数据添加数据

时间:2010-05-13 05:42:26

标签: c# xml winforms linq

如何从xml文件向dictonary添加数据

之情况:

我宣布了一个类似

的dictonary
 Dictonary<string,string> SampleDict=new Dictonary<string,string>();

我的xml文件就像

 <Data>
   <Element ValOne="1" ValTwo="0" />
   <Element ValOne="2" ValTwo="2" />
   <Element ValOne="3" ValTwo="4" />
   <Element ValOne="4" ValTwo="6" />
   <Element ValOne="5" ValTwo="8" />
   <Element ValOne="6" ValTwo="10" />
   <Element ValOne="7" ValTwo="12" />
   <Element ValOne="8" ValTwo="14" />
   <Element ValOne="9" ValTwo="16" />
   <Element ValOne="10" ValTwo="18" />
</Data>

我需要使用LINQ读取“ValOne”和“ValTwo”的值,并将其插入上面声明的dictonary中

以及如何将dictonary的内容添加到包含两列的listview中。

请帮我这样做

提前致谢

4 个答案:

答案 0 :(得分:6)

您可以使用Linq to XML和ToDictionary。

var doc = XDocument.Load("path to xml");
doc.Elements("Element").ToDictionary(
  elem => elem.Attribute("ValOne").Value, //Dictionary key
  elem => elem.Attribute("ValTwo").Value  //Dictionary value
);

ToDictionary的这个特殊重载使用不同的lambdas来为生成的集合提取键和值。

答案 1 :(得分:4)

大概你想要ValOne成为关键,而ValTwo是值吗?

document.Descendants("Element")
    .ToList()
    .ForEach(e => SampleDict[e.Attribute("ValOne").Value] = e.Attribute("ValTwo").Value);

这假设您已将XML文件读入XDocumentXElement

答案 2 :(得分:1)

XElement allData = XElement.Load("File.xml");
var els = allData.Descendants("Element");

foreach(var xe in els)
{
   SampleDict[xe.Attribute("ValOne").Value] = xe.Attribute("ValTwo").Value;
}

答案 3 :(得分:1)

在这种情况下,您可能希望使用数据绑定。看看这篇文章:
http://www.codeproject.com/KB/miscctrl/DBListViewForV2.aspx

您需要做的就是......

var items = from xe in els
  select {
    ValOne = xe.Attribute("ValOne").Value,
    ValTwo = xe.Attribute("ValTwo").Value
  }

var arr = items.ToArray();

//private DBListView dataBoundListView;
//dataBoundListView.DataSource = this.bindingSource1;
this.bindingSource1.DataSource = arr;