Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <pre><code>using (var model = new AlbinTestEntities()) { var triples = from t1 in model.Numbers from t2 in model.Numbers from t3 in model.Numbers where t1.Number + 1 == t2.Number where t2.Number + 1 == t3.Number select new { t1 = t1.Number, t2 = t2.Number, t3 = t3.Number, }; foreach (var res in triples) { Console.WriteLine(res.t1 + ", " + res.t2 + ", " + res.t3); } } </code></pre> <p>It generates the following SQL</p> <pre><code>SELECT [Extent1].[Number] AS [Number], [Extent2].[Number] AS [Number1], [Extent3].[Number] AS [Number2] FROM [dbo].[Numbers] AS [Extent1] CROSS JOIN [dbo].[Numbers] AS [Extent2] CROSS JOIN [dbo].[Numbers] AS [Extent3] WHERE (([Extent1].[Number] + 1) = [Extent2].[Number]) AND (([Extent2].[Number] + 1) = [Extent3].[Number]) </code></pre> <p>It might be even better to use an inner join like this</p> <pre><code>using (var model = new AlbinTestEntities()) { var triples = from t1 in model.Numbers join t2 in model.Numbers on t1.Number + 1 equals t2.Number join t3 in model.Numbers on t2.Number + 1 equals t3.Number select new { t1 = t1.Number, t2 = t2.Number, t3 = t3.Number, }; foreach (var res in triples) { Console.WriteLine(res.t1 + ", " + res.t2 + ", " + res.t3); } } </code></pre> <p>but when I compare the resulting queries in management studio they generate the same execution plan and take exactly the same time to execute. I have only this limited dataset you might compare the performance on your dataset if it is larger and pick the best if they differ.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload