如何在c#中调用返回类型为数组的函数

时间:2010-04-28 06:57:07

标签: c#

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 []'转换为'string []' 请makegetst我如何调用页面加载函数返回类型是数组。

3 个答案:

答案 0 :(得分:6)

您的方法被声明为返回CD[],并且正如编译器告诉您的那样,您无法从CD[]转换为string[]。这样称呼它:

CD[] cds = GetCDCatalog();

如果您需要转换为字符串数组,那么您可以使用以下内容:

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

或者,如果你真的不需要它在数组中,你可以使用:

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

答案 1 :(得分:0)

将Page.Load中的通话更改为Calender.CD[] arr = GetCDCatalog()

或使用List:

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

答案 2 :(得分:0)

问题在于您将其称为:

string[] arr = GetCDCatalog();

当GetCDCatalog返回CD(CD [])数组时。

你需要这样做:

CD[] arr = GetCDCatalog();