我将ScottGu's Tutorial后面的LINQ to XML模型放在一起,它返回一个RSS提要,然后我可以使用foreach循环来获取数据,当我把它放在相同的.cs文件中时。< / p>
然后我把它放到它自己的类中,从代码调用,但是我不能从我的其他页面访问“items”来执行ForEach循环。我对此很陌生,想知道我需要写什么?
继承我自己的.s文件中的rss阅读器(由scotts松散构建)。我可以访问DataAnswerFeed但不能访问“var items”。我需要一种方法来返回一个值吗?
public class DataAnswerFeed
{
public string AnsID { get; set; }
public string AnsQueID { get; set; }
public string AnsText { get; set; }
public string Correct { get; set; }
}
public class AnswerFeed
{
public AnswerFeed()
{
WebClient feed = new WebClient();
feed.DownloadStringCompleted += new DownloadStringCompletedEventHandler(feed_DownloadStringCompleted);
feed.DownloadStringAsync(new Uri("http://myRssFeed.xml"));
}
private static readonly XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
public void feed_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
XElement uri = XElement.Parse(e.Result);
var items = (from item in uri.Descendants(m + "properties")
select new DataAnswerFeed()
{
AnsID = item.Descendants().ToList()[0].Value,
AnsQueID = item.Descendants().ToList()[1].Value,
AnsText = item.Descendants().ToList()[2].Value,
Correct = item.Descendants().ToList()[3].Value
}).ToList();
}
}
}
在我的其他页面中,我编写DataAnswerFeed newFeed = new DataAnswerFeed(); 然后我尝试以类似于我在类中的方式运行ForEach循环,但是得到一个错误,说没有“GetEnumerator”的公共定义?
在宣布newFeed之后,在一个单独的空虚中继承了我的foreach。 public void testPage_Loaded(object sender, RoutedEventArgs e)
{
// ForEach loop on the list
foreach (DataAnswerFeed a in newFeed)
{
//Show test data to check working
MessageBox.Show(a.AnsText);
}
}
...谢谢
答案 0 :(得分:0)
将此添加到您的AnswerFeed
课程
public static List<DataAnswerFeed> Answers = new List<DataAnswerFeed>();
然后将查询结果分配给它
Answers = (from item in uri.Descendants(m + "properties") ...
在testPage_Loaded
:
foreach (DataAnswerFeed a in AnswerFeed.Answers)
拥有静力学并不好,但它会起作用;)