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;
精彩评论