FirstOrDefault没有参与争论

时间:2012-01-02 10:16:46

标签: c# wpf xml linq

我将读取条形码放在单独的方法中,该方法读取条形码并将其放入名为条形码的文本框中。并创建了一个按钮,用于加载与该条形码相对应的数据,但面临问题

private void Load_Click(object sender, RoutedEventArgs e) 
{
    var str = @"<Books xmlns=""""> <book Barcode=""780672318863""><Serial>11</Serial> 
                           <name>abc</name> <detail>Fantasy</detail></book>
                           <book Barcode=""780672318864""><Serial>12</Serial>
                           <name>abc</name><detail>Fantasy1</detail></book></Books>";
    var strBarcode = barcode.Text;
    MessageBox.Show(strBarCode);
    XDocument docX = XDocument.Parse(str);
    var s = docX.Descendants("book").FirstOrDefault(a => a.Attribute("Barcode").Value == strBarcode);
    spnl.DataContext = s; 
}

现在Messagebox说strBarCode具有正确的值,但它没有出现在程序中 s值即将出现 另一方面,如果我直接用“780672318863”代替strBarcode它正确显示值 谁能告诉我哪里出错?

1 个答案:

答案 0 :(得分:1)

不可复制。

我用docX.Descendants("book")...运行你的代码并生成正确的元素。

你可以尝试

  string  strBarcode = barcode.Text.Trim();

但是对于其他人,您只需要在调试器中查看。