Я пытаюсь перебрать каждый элемент в PcsInItem , получить Цена для каждого и вставить их в таблицу SQL. Ниже моя XML структура.
<Message>
<Body>
<Item Id="8683297523">
<PcsInItem>
<Pcs Price="20" PcsId="12829"></Pcs>
<Pcs Price="50" PcsId="64838"></Pcs>
<Pcs Price="80" PcsId="43829"></Pcs>
</PcsInItem>
</Item>
</Body>
</Message>
Когда я запускаю код, он вставляет только первый элемент в SQL. Я не мог понять, почему он не выполняет итерации других элементов, а только получает первый.
Это мой код:
var xdoc = XDocument.Parse(soapResult);
var y = xdoc.Descendants("Body").Descendants("PcsInItem");
var a = xdoc.Descendants("Body");
XElement b = a.Elements("Item").Last();
var ItemId = b.Attributes("Id").FirstOrDefault().Value;
SqlConnection conn;
string constring = @"...";
string query = "INSERT INTO..";
using (conn = new SqlConnection(constring))
{
foreach (XElement x in y)
{
var Price = x.Element("Pcs").Attribute("Price")?.Value;
var PcsId = x.Element("Pcs").Attribute("PcsId")?.Value;
using (var cmd = new SqlCommand(query, conn))
{
try
{
conn.Open();
cmd.Parameters.AddWithValue("@Price", Price);
cmd.Parameters.AddWithValue("@PcsId", PcsId);
cmd.Parameters.AddWithValue("@ItemId", ItemId);
komut2.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}
Любая идея, почему я только получаю первым предмет в моей таблице SQL? Должно быть 3 разных записи таблицы, и все эти три записи имеют один и тот же ItemId, но разные Price и PcsId.