开发者

How to add data to a dictonary in c#

How to add data to dictonary from xml file

scenerio:

I've declared a dictonary like

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

and my xml file is like

 <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"开发者_StackOverflow ValTwo="14" />
   <Element ValOne="9" ValTwo="16" />
   <Element ValOne="10" ValTwo="18" />
</Data>

i need to read the value of "ValOne" and "ValTwo" using LINQ and insert the same into the above declared dictonary

and how to add the contents of the dictonary to a listview which contains two columns.

Please help me to do this

Thanks in advance


You can use Linq to XML and ToDictionary for this.

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
);

This particular overload of ToDictionary uses different lambdas to extract keys and values for the generated collection.


Presumably you want ValOne to be the key and ValTwo to be the value?

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

This assumes you have read your XML file into an XDocument or XElement


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;
}


You may want to use data binding in that case. Have a look at this article:
http://www.codeproject.com/KB/miscctrl/DBListViewForV2.aspx

All you need to do is...

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;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜