| 

.NET C# Java Javascript Exception

2
Hi zusammen,
ich würde gerne über eine foreach ein paar XElements mit werten erstellen lassen.
ungefähr so:
XElement data = new XElement("Data",
new XElement("sp",
new XAttribute("Name", procedure)),
new XElement("cs",
new XAttribute("Value", connString)),
new XElement("pn",
new XAttribute("Value", providerName)),
new XElement("keys",
foreach (string key in keys.AllKeys)
new XElement("key",
new XAttribute("Name",key),
new XAttribute("Value",keys[key]))));

allerdings mag Visual Studio 2010 die foreach-schleife an dieser stelle nicht.
hat jmd ein tipp ?

danke
29.08.2011
DaTaBeRt 419 1 7
4 Antworten
3
foreach ist ein Konstrukt zur Ablaufsteuerung. Du kannst damit keinen Ausdruck vom Typ object[] erstellen, den der Compiler an dieser Stelle erwartet.

Lösung: lagere die Schleife in eine kleine Hilfsmethode aus, etwa so:
private static IEnumerable<XElement> CreateXElementArray(NameValueCollection keys)
{
foreach (string key in keys.AllKeys)
yield return new XElement("key",
new XAttribute("Name", key),
new XAttribute("Value", keys[key]));
}

...

new XElement("keys", CreateXElementArray(keys).ToArray())
29.08.2011
Matthias Hlawatsch 13,2k 4 9
danke für die gute antwort !
DaTaBeRt 29.08.2011
2
Zur Ergänzung zu den bisher guten Antworten:
Mit Linq kannst du Matthias Vorschlag modifizieren und auf eine Hilfsmethode verzichten.
new XElement("keys", keys.AllKeys.Select(key => new XElement("key",
new XAttribute("Name", key),
new XAttribute("Value", keys[key]))).ToArray()));
29.08.2011
Jürgen Luhr 7,1k 1 9
die lösung find ich auch klasse, Danke!
DaTaBeRt 29.08.2011
1
Hallo,

so wie Matthias Hlawatsch vorgeschlagen hat, od. du verwendest die Add-Methode vom XElement in der foreach-Schleife.


mfG Gü
29.08.2011
gfoidl 9,4k 3 5
0
So we can be really enjoying this website for sims freeplay cheat that is really needed by us.
15.01.2017

Stelle deine .net-Frage jetzt!