<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deferred Execution on Artur Rios Lab</title><link>https://lab.artur-rios.tech/tags/deferred-execution/</link><description>Recent content in Deferred Execution on Artur Rios Lab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 12:40:00 +0000</lastBuildDate><atom:link href="https://lab.artur-rios.tech/tags/deferred-execution/index.xml" rel="self" type="application/rss+xml"/><item><title>IEnumerable, ICollection, IList and IQueryable: What Each Collection Interface Promises</title><link>https://lab.artur-rios.tech/dotnet/collection-interfaces/</link><pubDate>Wed, 21 Oct 2026 12:40:00 +0000</pubDate><guid>https://lab.artur-rios.tech/dotnet/collection-interfaces/</guid><description>&lt;p&gt;Open almost any C# codebase and you will find method signatures that take an&#10;&lt;code&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/code&gt;, entities with &lt;code&gt;ICollection&amp;lt;T&amp;gt;&lt;/code&gt; navigation properties,&#10;repositories returning &lt;code&gt;IQueryable&amp;lt;T&amp;gt;&lt;/code&gt;, and the occasional &lt;code&gt;IList&amp;lt;T&amp;gt;&lt;/code&gt; or&#10;&lt;code&gt;IReadOnlyList&amp;lt;T&amp;gt;&lt;/code&gt;. They are easy to treat as interchangeable names for &amp;ldquo;a bunch&#10;of items&amp;rdquo;, and the code usually compiles whichever one you pick. Yet each&#10;interface makes a different promise, and choosing the wrong one causes real&#10;bugs: a query that runs three times, a database table loaded into memory to be&#10;filtered in C#, an exception thrown far from the line that caused it, or a&#10;&amp;ldquo;read-only&amp;rdquo; list that changes under your feet.&lt;/p&gt;</description></item></channel></rss>