| 

.NET C# Java Javascript Exception

1
Die zu durchsuchende XML-Struktur sieht z. B.: so aus:

- <Beispiel>
- <Mandanten>
- <Mandant ID="3b575485-f753-45e3-8e6f-aa19a95624f8" Status="1">
<Nummer>14708</Nummer>
<Name>Testbeispiel, Michael</Name>
<Typ>1</Typ>
</Mandant>
- <Mandant ID="4b565485-f253-41h2-8e6f-bb19a95624h8" Status="1">
<Nummer>14709</Nummer>
<Name>Beispiel, Wolfhardt</Name>
<Typ>1</Typ>
</Mandant>
</Mandanten>
</Beispiel>

Nun möchte ich mit folgender Abfrage einen einfachen Stringvergleich realisieren:

var query = from mdt in cat.Descendants("Mandant")
let MdtGuid = (string) mdt.Attribute("ID")
// Die Variable guid ist ein string und hat den Inhalt "3b575485-f753-45e3-8e6f-aa19a95624f8"
// diese Abfrage scheitert! Ich muss jedoch einen Variableninhalt vergleichen...;-(
where MdtGuid == guid
// das tut auch nicht where MdtGuid.Contains(guid)

// diese Beispielabfrage funktioniert!
// where MdtGuid.Contains("3b575485-f753-45e3-8e6f-aa19a95624f8")
select
new
{
MdtNr = mdt.Element("Nummer").Value,
MdtName = mdt.Element("Name").Value,
MdtTyp = mdt.Element("Typ").Value

};
03.03.2011
Wolfhardt 21 1 1 2
1 Antwort
1
Prinzipiell sollte der Code funktionieren. Testweise kann in LINQPad folgender Code ausgeführt werden (als Sprache "C# Statements" wählen), und liefert auch das vermutlich erwartete Ergebnis:

var xmlstr = @"<Beispiel>
<Mandanten>
<Mandant ID=""3b575485-f753-45e3-8e6f-aa19a95624f8"" Status=""1"">
<Nummer>14708</Nummer>
<Name>Testbeispiel, Michael</Name>
<Typ>1</Typ>
</Mandant>
<Mandant ID=""4b565485-f253-41h2-8e6f-bb19a95624h8"" Status=""1"">
<Nummer>14709</Nummer>
<Name>Beispiel, Wolfhardt</Name>
<Typ>1</Typ>
</Mandant>
</Mandanten>
</Beispiel>
";

XElement xml = XElement.Parse(xmlstr);
var guid = "3b575485-f753-45e3-8e6f-aa19a95624f8";

var queryResult = from mdt in xml.Descendants("Mandant")
let MdtGuid = (string) mdt.Attribute("ID")
where MdtGuid == guid
select new {
MdtNr = mdt.Element("Nummer").Value,
MdtName = mdt.Element("Name").Value,
MdtTyp = mdt.Element("Typ").Value
};

queryResult.Dump();


queryResult.Dump() ergibt dann
MdtNr | MdtName               | MdtTyp 
------+-----------------------+-------
14708 | Testbeispiel, Michael | 1


Ich würde den Fehler erstmal an der Variable guid suchen (falscher Wert, falscher Typ?).
03.03.2011
jschlg 61 2
Vielen Dank für Deine Antwort! Hängt wirklich daran, dass ein Unterschied bei der Definition von Stringvariablen besteht (Unicode)
Wolfhardt 03.03.2011

Stelle deine .net-Frage jetzt!