2010-04-28 19 views
0
public CD[] GetCDCatalog() 
{ 
    XDocument docXML = 
    XDocument.Load(Server.MapPath("mydata.xml")); 

    var CDs = 
     from cd in docXML.Descendants("Table") 
     select new CD 
     { 
      title = cd.Element("title").Value, 
      star = cd.Element("star").Value, 
      endTime = cd.Element("endTime").Value, 

     }; 
    return CDs.ToArray<CD>(); 
} 

我在頁面加載 即調用此函數。 string [] arr = GetCDCatalog(); 但這是給錯誤不能隱式地將類型'Calender.CD []'轉換爲'字符串[]' 請sugartst如何在頁面加載時調用函數返回類型是數組。如何在c#中調用返回類型爲數組的函數

+0

我認爲你的錯誤是在調用代碼。你是否在做'string [] cds = GetCDCatalog();'? – Strelok 2010-04-28 06:58:46

回答

6

你的方法被聲明爲返回一個CD[],正如編譯器告訴你的,你不能從CD[]轉換爲string[]。這樣調用它來代替:

CD[] cds = GetCDCatalog(); 

如果需要轉換爲字符串數組,那麼你可以使用這樣的事情:

string[] cds = GetCDCatalog().Select(x => x.title).ToArray(); 

或者,如果你並不真的需要它在陣列中,你可以只使用:

IEnumerable<string> cds = GetCDCatalog().Select(x => x.title); 
+0

它的工作,感謝您的幫助。 – 2010-04-28 07:23:53

0

更改呼叫Page.Load到Calender.CD[] arr = GetCDCatalog()

也可以是列表:

public List<CD> GetCDCatalog() { XDocument docXML = XDocument.Load(Server.MapPath("mydata.xml")); 

    var CDs = 
     from cd in docXML.Descendants("Table") 
     select new CD 
     { 
      title = cd.Element("title").Value, 
      star = cd.Element("star").Value, 
      endTime = cd.Element("endTime").Value, 

     }; 
    return CDs.ToList(); 
} 
+0

更好地使用接口作爲返回類型,如IList 或ICollection 。 – emzero 2010-04-28 07:02:54

0

的問題是,你在呼喚它:

string[] arr = GetCDCatalog(); 

時GetCDCatalog將返回CD(CD [])的數組。

你需要做的:

CD[] arr = GetCDCatalog();