# C1.LiveLinq.LiveViews.View-1.Join

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="C1_LiveLinq_LiveViews_View_1_Join_" data-uid="C1.LiveLinq.LiveViews.View`1.Join*">Join Method
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="C1_LiveLinq_LiveViews_View_1_Join_" data-uid="C1.LiveLinq.LiveViews.View`1.Join*"></a>
<h4 id="C1_LiveLinq_LiveViews_View_1_Join__3_C1_LiveLinq_IObservableSource___0__System_Linq_Expressions_Expression_System_Func__0___1___System_Linq_Expressions_Expression_System_Func___0___1___System_Linq_Expressions_Expression_System_Func__0___0___2___" data-uid="C1.LiveLinq.LiveViews.View`1.Join``3(C1.LiveLinq.IObservableSource{``0},System.Linq.Expressions.Expression{System.Func{`0,``1}},System.Linq.Expressions.Expression{System.Func{``0,``1}},System.Linq.Expressions.Expression{System.Func{`0,``0,``2}})">Join&lt;TInner, TKey, TResult&gt;(IObservableSource&lt;TInner&gt;, Expression&lt;Func&lt;T, TKey&gt;&gt;, Expression&lt;Func&lt;TInner, TKey&gt;&gt;, Expression&lt;Func&lt;T, TInner, TResult&gt;&gt;)</h4>
<div class="markdown level1 summary"><p>Correlates the elements of two views based on matching keys.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public View&lt;TResult&gt; Join&lt;TInner, TKey, TResult&gt;(IObservableSource&lt;TInner&gt; inner, Expression&lt;Func&lt;T, TKey&gt;&gt; outerKeySelector, Expression&lt;Func&lt;TInner, TKey&gt;&gt; innerKeySelector, Expression&lt;Func&lt;T, TInner, TResult&gt;&gt; resultSelector)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Function Join(Of TInner, TKey, TResult)(inner As IObservableSource(Of TInner), outerKeySelector As Expression(Of Func(Of T, TKey)), innerKeySelector As Expression(Of Func(Of TInner, TKey)), resultSelector As Expression(Of Func(Of T, TInner, TResult))) As View(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.IObservableSource-1.html">IObservableSource</a>&lt;TInner&gt;</td>
      <td><span class="parametername">inner</span></td>
      <td><p>The collection (usually, a view) to join to this view.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.linq.expressions.expression-1">Expression</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;T, TKey&gt;&gt;</td>
      <td><span class="parametername">outerKeySelector</span></td>
      <td><p>A function to extract the join key from each element of this view.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.linq.expressions.expression-1">Expression</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;TInner, TKey&gt;&gt;</td>
      <td><span class="parametername">innerKeySelector</span></td>
      <td><p>A function to extract the join key from each element of the second view.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.linq.expressions.expression-1">Expression</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-3">Func</a>&lt;T, TInner, TResult&gt;&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>
  </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="C1.LiveLinq.LiveViews.View-1.html">View</a>&lt;TResult&gt;</td>
      <td><p>A view containing elements of type <i>TResult</i> that are obtained by performing an inner join on two views.</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">TInner</span></td>
      <td><p>The type of the elements of the view to join with this view.</p>
</td>
    </tr>
    <tr>
      <td><span class="parametername">TKey</span></td>
      <td><p>The type of the keys returned by the key selector functions.</p>
</td>
    </tr>
    <tr>
      <td><span class="parametername">TResult</span></td>
      <td><p>The type of the result elements.</p>
</td>
    </tr>
  </tbody>
</table>
</div>
