我已成功使用"union" as described here在c#项目中加入两个RSS源,但我们有一个场景,我们可以将多达一百个RSS源连接在一起。这个数量的饲料最好的方法是什么?
答案 0 :(得分:2)
我会使用SelectMany()
(通过LINQ显示)将Feed展平为单个序列,然后使用Distinct()
过滤掉您已经看过的重复项:
var feeds = new[] {
"http://stackoverflow.com/feeds/tag/silverlight",
"http://stackoverflow.com/feeds/tag/wpf"
};
var items = from url in feeds
from xr in XmlReader.Create(url).Use()
let feed = SyndicationFeed.Load(xr)
from i in feed.Items
select i;
var newFeed = new SyndicationFeed(items.Distinct());
Use()
是一种扩展方法described here,用于在读者使用后清理它。您还可能需要定义自己的IEqualityComparer<SyndicationItem>
以与Distinct()
一起使用。
答案 1 :(得分:0)
要解决“节点已属于另一个文档”的问题,只需从根节点获取Inner XML,然后将其附加到聚合文档的Inner XML中。