<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-7624394686148711990.post4237302347714756044..comments</id><updated>2009-11-23T10:30:02.244+11:00</updated><title type='text'>Comments on dave^2 = -1: IEnumerable&lt;T&gt; and ForEach()</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.davesquared.net/feeds/4237302347714756044/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html'/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-765511377564461791</id><published>2009-11-23T10:30:02.714+11:00</published><updated>2009-11-23T10:30:02.714+11:00</updated><title type='text'>Hi Scott,

Backwards compatibility is the first (a...</title><content type='html'>Hi Scott,&lt;br /&gt;&lt;br /&gt;Backwards compatibility is the first (and only) decent reason I&amp;#39;ve heard for not putting this in.&lt;br /&gt;&lt;br /&gt;You could still provide backwards compatibility with the ForEach extension method implementation (special cases for Array and IList, or maybe indexed collections act differently), but that could still cause confusion. &lt;br /&gt;&lt;br /&gt;And breaking changes are never nice, so I guess leaving people to implement it themselves is an understandable position from MS.&lt;br /&gt;&lt;br /&gt;Thanks for your comments. :)&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;David</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/765511377564461791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/765511377564461791'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1258932602714#c765511377564461791' title=''/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15069573216606975109'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-9123742569979062499</id><published>2009-11-22T01:50:50.173+11:00</published><updated>2009-11-22T01:50:50.173+11:00</updated><title type='text'>M$ backward compatibility issues... ForEach on lis...</title><content type='html'>M$ backward compatibility issues... ForEach on list was around in .net2.0. It&amp;#39;s not an extension method.&lt;br /&gt;&lt;br /&gt;If I write the following method, I would expect this to work.&lt;br /&gt;&lt;br /&gt;function DumplicateItems(of T)(this ICollection(of T) list)&lt;br /&gt;    where T : struct&lt;br /&gt;{&lt;br /&gt;    list.ForEach(x =&amp;gt; list.Add(x));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;or even&lt;br /&gt;&lt;br /&gt;class someclass&lt;br /&gt;{&lt;br /&gt;    /// Would work because you are using the List(of T) member&lt;br /&gt;    private List(Of int) as new List(of int)&lt;br /&gt;   &lt;br /&gt;    /// Would Fail because you use the IEnumerableExtention, not the member&lt;br /&gt;    private IList(Of int) as new List(of int)&lt;br /&gt;   &lt;br /&gt;    func Main()&lt;br /&gt;    {&lt;br /&gt;        list.ForEach(x =&amp;gt; list.Add(x));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I suppose when they did it they were trying to eliminate confusion.&lt;br /&gt;&lt;br /&gt;Imagine two versions of the method on list, one real, one extension. one that makes the collection readonly, one that doesn&amp;#39;t. it would just be weird.&lt;br /&gt;&lt;br /&gt;It would lead to a different post from you.&lt;br /&gt;&lt;br /&gt;You probably have a valid point, but I understand why M$ doesn&amp;#39;t have it.&lt;br /&gt;&lt;br /&gt;Scott Youngblut&lt;br /&gt;MCPD</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/9123742569979062499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/9123742569979062499'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1258815050173#c9123742569979062499' title=''/><author><name>Leat Hakkor</name><uri>http://www.blogger.com/profile/01670951582229692979</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-6774097788675525391</id><published>2009-11-21T23:18:46.374+11:00</published><updated>2009-11-21T23:18:46.374+11:00</updated><title type='text'>Hi Scott / Leat. :)

I'm not sure I completely fol...</title><content type='html'>Hi Scott / Leat. :)&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not sure I completely follow your point. While iterating over a collection you generally really, really want it to be read only. For example, what will be in &lt;i&gt;list&lt;/i&gt; after this completes?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;var list = new List&amp;lt;string&amp;gt; {&amp;quot;Hello&amp;quot;, &amp;quot;World&amp;quot;, &amp;quot;How&amp;quot;, &amp;quot;Are&amp;quot;, &amp;quot;You?&amp;quot;};&lt;br /&gt;list.ForEach(x =&amp;gt; list.Remove(x));&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Not exactly obvious right? In fact, the standard &lt;i&gt;foreach&lt;/i&gt; keyword prohibits this:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;foreach (var item in list) { list.Remove(item); }&lt;br /&gt;&lt;br /&gt;System.InvalidOperationException : Collection was modified; enumeration operation may not execute.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So most of the time when we are ForEaching, we just want to perform some action on every item in our enumerable. This should not alter the underlying collection, and preferably won&amp;#39;t modify each item either.&lt;br /&gt;&lt;br /&gt;And remember, ForEach would just be syntactic sugar over standard &lt;i&gt;foreach&lt;/i&gt; for IEnumerables, so it is not like we are introducing an entirely disruptive language feature or anything.&lt;br /&gt;&lt;br /&gt;Hope I haven&amp;#39;t completely missed your point -- please correct me if I have. Thanks for taking the time to comment.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;David</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/6774097788675525391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/6774097788675525391'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1258805926374#c6774097788675525391' title=''/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15069573216606975109'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-8183459971743417961</id><published>2009-11-21T14:42:21.586+11:00</published><updated>2009-11-21T14:42:21.586+11:00</updated><title type='text'>After looking at the version of ForEach on List(of...</title><content type='html'>After looking at the version of ForEach on List(of TItem) in reflector I believe I know the reason why IEnumerable(of T) doesn&amp;#39;t exist.&lt;br /&gt;&lt;br /&gt;When you iterate over a Collection via an index, which is what happens in List, the collection is not &amp;quot;readonly&amp;quot;. The caller is allowed to remove and add items to the source collection. So with this implementation there is &amp;quot;less risk&amp;quot;, for the end user to do something wrong.&lt;br /&gt;&lt;br /&gt;However, iterating via index isn&amp;#39;t an option on IEnumerable(of T). The collection is made &amp;quot;readonly&amp;quot;. That makes a lot of problems. Imagine passing around a function that augments the source list, it ends up in some library you are using, then BAM! Exception. Who wants an uncontrollable exception you don&amp;#39;t expect. That&amp;#39;s why they demand a list. Because IList(of TItem) is the most basic interface that allows iterating by index.&lt;br /&gt;&lt;br /&gt;The best thing to do would be write you own unsafe extension method, and use it with caution.&lt;br /&gt;&lt;br /&gt;-Scott Youngblut&lt;br /&gt;MCPD</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/8183459971743417961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/8183459971743417961'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1258774941586#c8183459971743417961' title=''/><author><name>Leat Hakkor</name><uri>http://www.blogger.com/profile/01670951582229692979</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-4616763289310346306</id><published>2008-12-09T17:31:02.346+11:00</published><updated>2008-12-09T17:31:02.346+11:00</updated><title type='text'>Anonymous,Not sure what you mean about not working...</title><content type='html'>Anonymous,&lt;BR/&gt;&lt;BR/&gt;Not sure what you mean about not working for value types? &lt;BR/&gt;&lt;BR/&gt;You can't use &lt;I&gt;foreach&lt;/I&gt; to update an array of value types (say, int[]) because you would only be operating on a local copy of the value. In fact, C# prevents this with a CS1656 error.&lt;BR/&gt;&lt;BR/&gt;So in this regard the .ForEach() extension method pretty much works as expected. (As you can see, it is just syntactic sugar over &lt;I&gt;foreach&lt;/I&gt; anyway.)&lt;BR/&gt;&lt;BR/&gt;Regards,&lt;BR/&gt;David</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/4616763289310346306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/4616763289310346306'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1228804262346#c4616763289310346306' title=''/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15069573216606975109'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-7865630819105520088</id><published>2008-12-06T06:35:13.184+11:00</published><updated>2008-12-06T06:35:13.184+11:00</updated><title type='text'>This doesn't work with value types... if you are t...</title><content type='html'>This doesn't work with value types... if you are trying to change something on the value type it doesn't work.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/7865630819105520088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/7865630819105520088'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1228505713184#c7865630819105520088' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-6025377845868624167</id><published>2008-07-17T07:57:48.080+10:00</published><updated>2008-07-17T07:57:48.080+10:00</updated><title type='text'>@Anonymous,Great point about enabling method chain...</title><content type='html'>@Anonymous,&lt;BR/&gt;Great point about enabling method chaining. &lt;BR/&gt;&lt;BR/&gt;I was originally aiming for the same signature as for Array.ForEach&amp;lt;T&amp;gt; and List&amp;lt;T&amp;gt;.ForEach, but I like your way better. It's more consistent with most of the extension methods in System.Linq.Enumerable.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/6025377845868624167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/6025377845868624167'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1216245468080#c6025377845868624167' title=''/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15069573216606975109'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-7276864086280257817</id><published>2008-07-17T03:16:20.639+10:00</published><updated>2008-07-17T03:16:20.639+10:00</updated><title type='text'>I am surprised that the ForEach() was left off of ...</title><content type='html'>I am surprised that the ForEach() was left off of the IEnumerable&amp;lt;T&amp;gt; interface as well.  Thanks for bringing up this topic.  As a small variation on your implementation of ForEach() I return the "source" extension argument after the loop has executed since I often do things like IEnumerable&amp;lt;T&amp;gt;.While(item =&amp;gt; item.Property == 1).ForEach(item =&amp;gt; item.Property += 1).Select(item =&amp;gt; item.Property == 2);&lt;BR/&gt;&lt;BR/&gt;Folks may have other opinions, but for me it keeps the method result chain consistent.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/7276864086280257817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/7276864086280257817'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1216228580639#c7276864086280257817' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-5360195913413346</id><published>2008-07-03T06:41:21.861+10:00</published><updated>2008-07-03T06:41:21.861+10:00</updated><title type='text'>Hi @Yann,I really have no idea why it's not in the...</title><content type='html'>Hi @Yann,&lt;BR/&gt;I really have no idea why it's not in there. I can't see any downsides for including it.&lt;BR/&gt;&lt;BR/&gt;At least it's easy to add thanks to extension methods :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/5360195913413346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/5360195913413346'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1215031281861#c5360195913413346' title=''/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15069573216606975109'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-5180022289279212109</id><published>2008-07-03T04:38:34.866+10:00</published><updated>2008-07-03T04:38:34.866+10:00</updated><title type='text'>Indeed, it's seems incredible to me they just forg...</title><content type='html'>Indeed, it's seems incredible to me they just &lt;I&gt;forgot&lt;/I&gt; that feature. Do you know if there is any good reason behind, or do you believe it's really an omission?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/5180022289279212109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/5180022289279212109'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1215023914866#c5180022289279212109' title=''/><author><name>Yann Trevin</name><uri>http://www.blogger.com/profile/04758626765333804818</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-6778662272604079959</id><published>2008-03-30T14:13:35.814+11:00</published><updated>2008-03-30T14:13:35.814+11:00</updated><title type='text'>@gugo,I'm not sure exactly what problem you are ha...</title><content type='html'>@gugo,&lt;BR/&gt;I'm not sure exactly what problem you are having getting the ForEach extension to work. Feel free to post some code or email me if you would like any clarification.&lt;BR/&gt;Regards,&lt;BR/&gt;David</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/6778662272604079959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/6778662272604079959'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1206846815814#c6778662272604079959' title=''/><author><name>David</name><uri>http://www.blogger.com/profile/05155410712205848106</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15069573216606975109'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-7624394686148711990.post-8143793749365853824</id><published>2008-03-30T11:39:04.785+11:00</published><updated>2008-03-30T11:39:04.785+11:00</updated><title type='text'>I was searching for it just now.Incredible.I need ...</title><content type='html'>I was searching for it just now.&lt;BR/&gt;Incredible.&lt;BR/&gt;&lt;BR/&gt;I need to convert to List before using the ForEach.&lt;BR/&gt;&lt;BR/&gt;I tried to add a ForEach a extension, but i cannot write it without the usage of the&lt;BR/&gt;foreach(var v in IEnum...)&lt;BR/&gt;So again is like returning to a List&lt;BR/&gt;&lt;BR/&gt;:(</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/8143793749365853824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7624394686148711990/4237302347714756044/comments/default/8143793749365853824'/><link rel='alternate' type='text/html' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html?showComment=1206837544785#c8143793749365853824' title=''/><author><name>gugo</name><uri>http://www.blogger.com/profile/15062708065109674189</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.davesquared.net/2008/03/ienumerable-and-foreach.html' ref='tag:blogger.com,1999:blog-7624394686148711990.post-4237302347714756044' source='http://www.blogger.com/feeds/7624394686148711990/posts/default/4237302347714756044' type='text/html'/></entry></feed>