2014-01-14 22 views
0

我有如下:的LINQ to T級

var attributes = from root in doc.Elements() 
       where root.Name == "quran" 
       from suras in root.Elements() 
       where suras.Name == "suras" 
       from sura in suras.Elements() 
       where sura.Name == "sura" 
       from atts in sura.Attributes() 
       select atts; 

List<Sura> item = new List<Sura>(); 

和類

public class Sura 
{ 
    private string _aya; 
    private string _ayaTranslation; 
    System.Windows.HorizontalAlignment _ayaAlignment; 
    public string Aya 
    { 
     get { return _aya; } 
     set { _aya = value; } 
    } 
    public string AyaTranslation 
    { 
     get { return _ayaTranslation; } 
     set { _ayaTranslation = value; } 
    } 
} 
下面

是XML

<quran> 
    <suras> 
    <sura Aya="123" AyaTranslation="321"></sura> 
    <sura Aya="123" AyaTranslation="321"></sura> 
    <sura Aya="123" AyaTranslation="321"></sura> 
    </suras> 
</quran> 

我想轉換 「ATT」,列出「項目「,但我不知道它是如何做到的。雖然我GOOGLE了,但沒有幫助。

+0

'att'是什麼意思? – zmbq

+0

非常抱歉,它的「屬性」 – ARH

+0

可能,會更好地使用[xmlserializer](http://msdn.microsoft.com/ru-ru/library/system.xml.serialization.xmlserializer(v = vs.110))。 aspx) – Grundy

回答

1

您實際上並不需要attributes列表,您可以直接從您的文檔獲得List<Sura>

var items = (from sura in doc.Root.Element("suras").Elements("sura") 
      select new Sura { 
        Aya = (string)sura.Attribute("Aya"), 
        AyaTranslation = (string)sura.Attribute("AyaTranslation") 
      }).ToList(); 

正如你所看到的,我刪除了幾個from/where從您的查詢。如果您只希望使用名稱的一個元素,則使用Element("name")更容易。並且您始終可以從Root屬性獲取文檔根元素。

+0

感謝您的回覆,我可以轉換(字節)sura.Attribute(「Aya」)?它不起作用 – ARH

+0

因爲你的屬性被輸入爲字符串。 – MarcinJuraszek

+0

我把它改成了Byte,但是這個語句(字節)sura.Attribute(「Aya」)不起作用... – ARH