After a bunch of Google searches for "blog aggregator", "merging feeds", "combining feeds", "ASP.NET Blog Aggregator", and the like, the best I could come up for ASP.net was RSSToolkit, as explained in loving detail by Scott Guthrie, and a service by Feed Jumbler, which is only for non-commercial personal use and you must have the consent of the author(s) of the feed or somesuch: "By using this service, you acknowledge that you either own all the necessary rights for these source feeds or that you intend to use the resulting combined feeds and/or HTML/JavaScript code solely for your personal, non-commercial purposes."
That, of course, makes no sense to me as if you're making your content available via RSS on a publicly available website, then you're just asking for someone to use your content. If I opened my front door and put a sign out front listing everything in my house with an arrow pointing towards the open door, that's pretty much saying its ok to come on in and take what you want. But I digress.
I realize I'm many moons behind the actual release of this toolkit and maybe consuming multiple feeds is a no brainer that doesn't need to be blogged about, as evidenced by the lack of commentary out there. But then again, maybe everyone with the knowledge to blog about it is too busy, or once they've figured it out, then to hell with everyone else who hasn't figured it out. Let them too, perhaps, figure it out by themselves. Well, I did figure it out, and now I'm going to break that cycle to the dismay of, perhaps, Feed Jumbler. I, too, thought about somehow profiting from said merging of feeds, perhaps with the registration of FeedMerger.com, though that particular domain is taken by -- you guessed it - the good folks at feed jumbler. Be that as it may, they did come up with the idea first and I do give them credit. If you're reading this, you probably feel as I do, however; which is to keep your merging "in-house" so you can do custom things with it. And lest we forget their whole disclaimer as a good reason not to use them anyway. But I digress again. 
So now dear reader, if you've made it this far, I would like to reward you with some code that, once you have RSSToolkit installed, will let you merge multiple feeds. One big caveat I would like to mention, is that you should be aware of which fields are present in the feeds you want to consume. One feed may say "description" for the contents of the post, while another may call it "contents" - if you're checking for field names, as I do in my code, you'll want to do a much better job at doing so 
OK. So I have this site kicking around called "ShutUpAndRide.com" which I originally intended as a place to blog about my motorcycle experiences. However, after 5 posts, I quickly lost interest.
Sure they're fun to ride, but do you really care where I went or how much it cost me to fill up with gas? (Don't answer that). So anyway, I found 2 feeds of interest of the "Biker Genre": 1) http://www.whybike.com/blog/wp-rss2.php and 2) http://feeds.feedburner.com/helmethair and I'm sure I will add more.
The RSSToolkit gives you multiple ways to specify the URL for a feed to consume, but it only lets you specify one URL.
So what do you do. What DO you DO? You create your own list of RSS Elements that's what:
Dim items As New System.Collections.Generic.List(Of GenericRssElement)
Then simply populate that list for each feed:
-- BEGIN CODE --
Dim items As New System.Collections.Generic.List(Of GenericRssElement)
Dim x As New RssToolkit.GenericRssChannel
Dim ienum As IEnumerator
Dim counter As Integer
x = x.LoadChannel("http://www.whybike.com/blog/wp-rss2.php")
ienum = x.Items.GetEnumerator
While ienum.MoveNext = True
items.Add(CType(ienum.Current, GenericRssElement))
If items(counter).Attributes.ContainsKey("channellink") = False Then items(counter).Attributes.Add("channellink", x.Item("link"))
If items(counter).Attributes.ContainsKey("channeltitle") = False Then items(counter).Attributes.Add("channeltitle", x.Item("title"))
counter += 1
End While
--END CODE--
Note that a list of type GenericRssElement does not contain the name of the blog or the title of the blog. When you have posts from multiple blogs you're going to want to give credit where credit is due. So I went ahead and added channellink and channeltitle (if someone else wants to code a better way, be my guest) .
So now, you load the second feed:
-- BEGIN CODE --
x = New RssToolkit.GenericRssChannel
x = x.LoadChannel("http://feeds.feedburner.com/helmethair")
ienum = x.Items.GetEnumerator
While ienum.MoveNext = True
items.Add(CType(ienum.Current, GenericRssElement))
If items(counter).Attributes.ContainsKey("channellink") = False Then items(counter).Attributes.Add("channellink", x.Item("link"))
If items(counter).Attributes.ContainsKey("channeltitle") = False Then items(counter).Attributes.Add("channeltitle", x.Item("title"))
counter += 1
End While
-- END CODE --
GREAT! "But Dave", you say, "I want the posts to be sorted by newest post first, regardless of blog." "Yes, and I as well", comes my reply.
items.Sort(AddressOf SortRSSElement)
DataList1.DataSource = items
DataList1.DataBind()
It's that easy!. Well, almost. You have to define SortRSSElement:
Shared Function SortRSSElement(ByVal C1 As GenericRssElement, ByVal C2 As GenericRssElement) As Integer
Return CDate(C2.Item("pubdate")).CompareTo(CDate(C1.Item("pubdate")))
End Function
For more info on sorting a generic collection try searching for "System.Collections.Generic.List Sort". All that's remaining is to populate your information onitemdatabound:
Protected Sub datalist1_itemdatabound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs)
Dim feedlink As HyperLink = CType(e.Item.FindControl("feedlink"), HyperLink)
Dim feeddesclabel As Label = CType(e.Item.FindControl("feeddesclabel"), Label)
Dim blognamelink As HyperLink = CType(e.Item.FindControl("blognamelink"), HyperLink)
Dim pubdatelabel As Label = CType(e.Item.FindControl("pubdatelabel"), Label)
Dim authorlabel As Label = CType(e.Item.FindControl("authorlabel"), Label)
Dim dataitem As GenericRssElement = CType(e.Item.DataItem, GenericRssElement)
feedlink.NavigateUrl = dataitem("link")
feedlink.Text = dataitem("title")
feeddesclabel.Text = dataitem("description")
If feeddesclabel.Text = String.Empty Then feeddesclabel.Text = dataitem("content")
authorlabel.Text = dataitem("dc:creator")
blognamelink.Text = dataitem("channeltitle")
blognamelink.NavigateUrl = dataitem("channellink")
pubdatelabel.Text =
CDate(dataitem("pubdate")).ToShortDateString & " " & CDate(dataitem("pubdate")).ToShortTimeString
End Sub
and the corresponding front end:
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="datalist1_itemdatabound"><ItemTemplate>
<asp:HyperLink ID="feedlink" runat="server"></asp:HyperLink> in <asp:hyperlink ID="blognamelink" runat="server" /> by <asp:Label ID="authorlabel" runat=server/> on <asp:Label ID="pubdatelabel" runat=server/>
<br /><br />
<asp:label ID="feeddesclabel" runat=server/>
<hr />
</ItemTemplate>
</asp:DataList>
and like I said, you'll need to clean it up in terms of what fields are present or not, but I hope this helps you get your meaty paws around it conceptually. I thought (and please prove me wrong), that I could just plug in multiple URL's into RSSToolkit and get a merged feed back that I could simply consume, but I see no merging code. My guess is that nobody wants to deal with the complexities of all the various feed and publish date formats out there. If you want to code a one-size-fits-all feed merger, I'd use it, and blog about how cool it is, and tell all my friends about it. Think of all the fame and fortune you'll get. So, any takers?