2010-05-13 7 views
4

Comment ajouter des données à dictonary à partir du fichier xmlComment ajouter des données à un dictonary en C#

scenerio:

J'ai déclaré un dictonary comme

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

et mon fichier xml est comme

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

i besoin de lire la valeur de « Valone » et « ValTwo » en utilisant LINQ et insérez le même dans l'un bove a déclaré dictonary

et comment ajouter le contenu du dictonary à une listview qui contient deux colonnes.

S'il vous plaît aidez-moi à faire de cette

Merci à l'avance

+0

S'il vous plaît préciser/retag votre question de façon appropriée: êtes-vous référence à un ListView dans WPF? ASP.NET? WinForms? – jeffora

+0

in c sharp WinForms –

+0

Pourquoi utilisez-vous un dictionnaire et n'écrivez pas de fonction pour ce qui semble être une simple opération mathématique? –

Répondre

6

Vous pouvez utiliser LINQ pour XML et ToDictionary pour cela.

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

Cette surcharge particulière de ToDictionary utilise différentes lambdas pour extraire les clés et les valeurs de la collection générée.

+0

Je pense que MasterGaurav fournit une solution adéquate à la question de lier les données à une liste. –

4

On peut supposer que vous voulez Valone être la clé et ValTwo être la valeur?

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

Cela suppose que vous avez lu votre fichier XML dans un XDocument ou XElement

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

Vous pouvez utiliser la liaison de données dans ce cas. Jetez un oeil à cet article:
http://www.codeproject.com/KB/miscctrl/DBListViewForV2.aspx

Tout ce que vous devez faire est de ...

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; 
Questions connexes