2012-01-02 74 views
0

我把閱讀條形碼放在單獨的方法中,讀取條形碼並將其放入名爲條形碼的文本框中。並創建了一個按鈕,將數據加載coresponding到條形碼,但面臨的問題FirstOrDefault沒有參數

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; 
} 

現在消息框說strBarCode具有正確的值,但它沒有出現在程序和 價值是走出來爲空 上另一方面,如果我直接把「780672318863」代替strBarcode它正在顯示值
任何人都可以告訴我,我哪裏會出錯?

+2

您的XML不包含任何被稱爲「lense」的*元素,所以目前沒有辦法使這個代碼正常工作。如果您可以發佈一個簡短但完整的示例(理想情況下是一個控制檯應用程序)來展示問題,那將非常有幫助。 – 2012-01-02 10:23:06

+0

@JonSkeet - 但它有一個''。 OP對域詳細信息進行了不完整的混淆處理。 – 2012-01-02 10:32:03

+0

@亨克·霍特曼:是的,但善良知道同時還有什麼變化。或者,這可能不是一種混淆 - 也許它的代碼實際上是錯誤的,當他對條形碼進行硬編碼時,他做出了一些其他更改。無法確定 - 但我們可以*知道寫入的代碼永遠不會找到「lense」元素。這是一個簡短而完整的程序,展示問題非常重要。 – 2012-01-02 10:35:01

回答

1

不可再生。

我用docX.Descendants("book")...運行了你的代碼,它產生了正確的元素。

你可以嘗試

string strBarcode = barcode.Text.Trim(); 

但對於其餘部分,就只要看在調試器周圍。

+0

謝謝你修剪了竅門 – murmansk 2012-01-02 11:21:30

+0

我是WPF的新手,但你能告訴我什麼修剪嗎 – murmansk 2012-01-02 11:32:50

+0

修剪()與WPF無關。這是一個簡單的字符串方法,用於刪除前導和尾隨空格(空格)。 – 2012-01-02 11:42:44