# C1.LiveLinq.Indexing.Index-1.Join

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="C1_LiveLinq_Indexing_Index_1_Join_" data-uid="C1.LiveLinq.Indexing.Index`1.Join*">Join Method
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="C1_LiveLinq_Indexing_Index_1_Join_" data-uid="C1.LiveLinq.Indexing.Index`1.Join*"></a>
<h4 id="C1_LiveLinq_Indexing_Index_1_Join__2_System_Collections_Generic_IEnumerable___0__System_Func___0_System_Object__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator_" data-uid="C1.LiveLinq.Indexing.Index`1.Join``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Object},System.Func{`0,``0,``1},C1.LiveLinq.Indexing.Search.JoinOperator)">Join&lt;T2, TResult&gt;(IEnumerable&lt;T2&gt;, Func&lt;T2, object&gt;, Func&lt;T, T2, TResult&gt;, JoinOperator)</h4>
<div class="markdown level1 summary"><p>Correlates the items of this indexed collection with the items of another sequence and returns the combined items with matching keys.</p>
<p>Implements <a class="xref" href="C1.LiveLinq.Indexing.Search.IIndexScanner-1.Join.html#C1_LiveLinq_Indexing_Search_IIndexScanner_1_Join__2_System_Collections_Generic_IEnumerable___0__System_Func___0_System_Object__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator_">IIndexScanner(T).Join</a></p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public IEnumerable&lt;TResult&gt; Join&lt;T2, TResult&gt;(IEnumerable&lt;T2&gt; source, Func&lt;T2, object&gt; keySelector, Func&lt;T, T2, TResult&gt; resultSelector, JoinOperator op)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Function Join(Of T2, TResult)(source As IEnumerable(Of T2), keySelector As Func(Of T2, Object), resultSelector As Func(Of T, T2, TResult), op As JoinOperator) As IEnumerable(Of TResult)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;T2&gt;</td>
      <td><span class="parametername">source</span></td>
      <td><p>The second sequence to join to this collection.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;T2, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</td>
      <td><span class="parametername">keySelector</span></td>
      <td><p>A function to extract from a second sequence's item the value to match against this collection's key value.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-3">Func</a>&lt;T, T2, TResult&gt;</td>
      <td><span class="parametername">resultSelector</span></td>
      <td><p>A function to create a result element from two matching elements.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="C1.LiveLinq.Indexing.Search.JoinOperator.html">JoinOperator</a></td>
      <td><span class="parametername">op</span></td>
      <td><p>A comparison operator to match elements.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;TResult&gt;</td>
      <td><p>Enumeration of objects obtained by applying the result selector to pairs of joined elements of the two collections.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span class="parametername">T2</span></td>
      <td><p>The type of the elements of the second sequence.</p>
</td>
    </tr>
    <tr>
      <td><span class="parametername">TResult</span></td>
      <td><p>The type of the result elements.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="implements">Implements</h5>
    <div><a class="xref" href="C1.LiveLinq.Indexing.Search.IIndexScanner-1.Join.html#C1_LiveLinq_Indexing_Search_IIndexScanner_1_Join__2_System_Collections_Generic_IEnumerable___0__System_Func___0_System_Object__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator_">IIndexScanner&lt;T&gt;.Join&lt;T2, TResult&gt;(IEnumerable&lt;T2&gt;, Func&lt;T2, object&gt;, Func&lt;T, T2, TResult&gt;, JoinOperator)</a></div>


<a id="C1_LiveLinq_Indexing_Index_1_Join_" data-uid="C1.LiveLinq.Indexing.Index`1.Join*"></a>
<h4 id="C1_LiveLinq_Indexing_Index_1_Join__2_C1_LiveLinq_Indexing_Search_IIndexScanner___0__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator_" data-uid="C1.LiveLinq.Indexing.Index`1.Join``2(C1.LiveLinq.Indexing.Search.IIndexScanner{``0},System.Func{`0,``0,``1},C1.LiveLinq.Indexing.Search.JoinOperator)">Join&lt;T2, TResult&gt;(IIndexScanner&lt;T2&gt;, Func&lt;T, T2, TResult&gt;, JoinOperator)</h4>
<div class="markdown level1 summary"><p>Correlates the items of this indexed collection with the items of another indexed collection and returns the combined items with matching keys.</p>
<p>Implements <a class="xref" href="C1.LiveLinq.Indexing.Search.IIndexScanner-1.Join.html#C1_LiveLinq_Indexing_Search_IIndexScanner_1_Join__2_C1_LiveLinq_Indexing_Search_IIndexScanner___0__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator_">IIndexScanner(T).Join</a></p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public IEnumerable&lt;TResult&gt; Join&lt;T2, TResult&gt;(IIndexScanner&lt;T2&gt; source, Func&lt;T, T2, TResult&gt; resultSelector, JoinOperator op)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Function Join(Of T2, TResult)(source As IIndexScanner(Of T2), resultSelector As Func(Of T, T2, TResult), op As JoinOperator) As IEnumerable(Of TResult)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="C1.LiveLinq.Indexing.Search.IIndexScanner-1.html">IIndexScanner</a>&lt;T2&gt;</td>
      <td><span class="parametername">source</span></td>
      <td><p>The second indexed collection to join to this collection.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-3">Func</a>&lt;T, T2, TResult&gt;</td>
      <td><span class="parametername">resultSelector</span></td>
      <td><p>A function to create a result element from two matching elements.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="C1.LiveLinq.Indexing.Search.JoinOperator.html">JoinOperator</a></td>
      <td><span class="parametername">op</span></td>
      <td><p>A comparison operator to match elements.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;TResult&gt;</td>
      <td><p>Enumeration of objects obtained by applying the result selector to pairs of joined elements of the two collections.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><span class="parametername">T2</span></td>
      <td><p>The type of the elements of the second collection.</p>
</td>
    </tr>
    <tr>
      <td><span class="parametername">TResult</span></td>
      <td><p>The type of the result elements.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 class="implements">Implements</h5>
    <div><a class="xref" href="C1.LiveLinq.Indexing.Search.IIndexScanner-1.Join.html#C1_LiveLinq_Indexing_Search_IIndexScanner_1_Join__2_C1_LiveLinq_Indexing_Search_IIndexScanner___0__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator_">IIndexScanner&lt;T&gt;.Join&lt;T2, TResult&gt;(IIndexScanner&lt;T2&gt;, Func&lt;T, T2, TResult&gt;, JoinOperator)</a></div>
<h5 id="C1_LiveLinq_Indexing_Index_1_Join__2_C1_LiveLinq_Indexing_Search_IIndexScanner___0__System_Func__0___0___1__C1_LiveLinq_Indexing_Search_JoinOperator__remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>Matching of two elements is performed by matching their keys.</p>
</div>
</div>
