0

我正在尝试迭代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。

4

0 回答 0