Я бы использовал SelectMany()
(показанный здесь через LINQ), чтобы сгладить каналы в одну последовательность, а затем использовать 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()
- это метод расширения , описанный здесь для очистки считывателя после его использования. Вам также может понадобиться определить свой собственный IEqualityComparer<SyndicationItem>
для использования с Distinct()
.