<p>Say I have two lists:</p>

<pre><code>var list1 = new int[] {1, 2, 3};
var list2 = new string[] {"a", "b", "c"};
</code></pre>

<p>Is it possible to write a LINQ statement that will generate the following list:</p>

<pre><code>var result = new []{ 
    new {i = 1, s = "a"},
    new {i = 1, s = "b"},
    new {i = 1, s = "c"},
    new {i = 2, s = "a"},
    new {i = 2, s = "b"},
    new {i = 2, s = "c"},
    new {i = 3, s = "a"},
    new {i = 3, s = "b"},
    new {i = 3, s = "c"}
};
</code></pre>

<p>?</p>

<p>Edit: I forgot to mention I didn't want it in query syntax. Anyway, based on preetsangha's answer I've got the following:</p>

<pre><code>var result = list1.SelectMany(i =&gt;  list2.Select(s =&gt; new {i = i, s = s}));
</code></pre>

```
```
var result = from l1 in list1
             from l2 in list2       
             select new { i = l1, s = l2};
```
```