在c#中使用linq更新xml

Mr_*_*een 1 c# xml linq updates c#-4.0

我是.net初学者.

我正在尝试使用linq 更新我的xml文件.

我在第一点陷入困境,即我无法使用linq从xml文件中获取值.

这些是我在我的代码中使用的控件:

cbBrandName -- combobox
cbProduct   -- combobox
txtQuantity -- TextBox
Run Code Online (Sandbox Code Playgroud)

我正在尝试以下代码:

XElement doc = XElement.Load(@"..\..\stock.xml");
string quantity = doc.Descendants("quantity")
                  .Select(y => y.Element("quantity").Value.Equals(txtQuantity.Text))
/*red scribbles to 'Element' in 'where'*/ 
                  .Where(x => x.Element("productname").Value.Equals(cbProduct.Text) &&
                  x.Element("brandname").Value.Equals(cbBrandName.Text)).ToString();
MessageBox.Show(quantity.ToString());
Run Code Online (Sandbox Code Playgroud)

在这里我试图将"数量"值存储在quantity字符串中,以便我可以稍后操作它然后再次更新到我的xml文件.

当我做.select评论它没有显示任何错误,但当我运行它,而不是文本它system.linq.Enumerable + .....在MessageBox中显示一些.

编辑:

在此输入图像描述

当我最后给.toString()它.它显示错误 - "对象引用未设置为对象的实例".当我运行它.


提前谢谢.

lev*_*evi 5

XElement doc = XElement.Load(AppDomain.CurrentDomain.BaseDirectory + "/App_Data/XMLFile.xml");
        string quantity = doc.Descendants("items")
        .Select(y => y.Element("quantity").Value)
        .Where(x => x.Element("productname").Value.Equals(cbProduct.text) && x.Element("brandname").Value.Equals(cbBrandName.text))
        .Single().Element("quantity").Value;
Run Code Online (Sandbox Code Playgroud)

这可以

更新XML值

 doc.Descendants("items")
    .Where(x => x.Element("productname").Value.Equals(cbProduct.Text) && x.Element("brandname").Value.Equals(cbBrandName.Text))
    .Single().Element("quantity").SetValue(quantity);
        doc.Save(AppDomain.CurrentDomain.BaseDirectory + "/App_Data/XMLFile.xml");
Run Code Online (Sandbox Code Playgroud)