更新
我对此进行了更深入的研究。首先,对我来说,仅仅因为每个项目都有多个类别就按类别排序项目是没有意义的。正如您在下面指出的,您对过滤感兴趣。以下是我的做法(代码进入 UpdateFeedList 事件):
//same code as in the example
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
//I pull out the distinct list of categories from the entire feed
//You might want to bind this list to a dropdown on your app
//so that users can select what they want to see:
List<string> cats = new List<string>();
foreach (SyndicationItem si in feed.Items)
foreach(SyndicationCategory sc in si.Categories)
if (!cats.Contains(sc.Name))
cats.Add(sc.Name);
//Here I imagined that I want to see all items categorized as "Trendy"
SyndicationCategory lookingFor = new SyndicationCategory("Trendy");
//and I create a container where I could copy all "Trendy" items:
List<SyndicationItem> coll = new List<SyndicationItem>();
//And then I start filtering all items by the selected tag:
foreach (SyndicationItem si in feed.Items)
{
foreach (SyndicationCategory sc in si.Categories)
if (sc.Name == lookingFor.Name)
{
coll.Add(si);
break;
}
}
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// Bind the filtered of SyndicationItems to our ListBox.
feedListBox.ItemsSource = coll;
loadFeedButton.Content = "Refresh Feed";
});
以下内容不正确
yoursyndicationfeed.Categories.Sort()
我个人不会按日期降序对 RSS 提要进行排序(它应该已经排序),因为 RSS 提要以与它们发布的相反顺序为我提供网站内容的更新,并且我如何最人们习惯于看到它:)
另一个更新(也不正确:))
好的,所以我面前仍然没有该应用程序的代码,但是围绕文档(我在评论中提到)进行挖掘,您可以执行以下操作:
SyndicationFeed feed = SyndicationFeed.Load(xmlReader);
feed.Items.OrderBy(x => x.Category);
这个想法是 feed.Items 是您的元素列表。所以把它当作一个列表,按照你需要的属性对其进行排序。
哦,另外,我在RSS阅读器上看到了你的另一个问题,你必须使用样本吗?Scott Guthrie为 Windows Phone 7 编写了一个 RSS 客户端,他的实现似乎更简单一些。当然,这取决于您的需求。