# C1.LiveLinq.Indexing.IndexCollection-1.Add

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="C1_LiveLinq_Indexing_IndexCollection_1_Add_" data-uid="C1.LiveLinq.Indexing.IndexCollection`1.Add*">Add Method
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="C1_LiveLinq_Indexing_IndexCollection_1_Add_" data-uid="C1.LiveLinq.Indexing.IndexCollection`1.Add*"></a>
<h4 id="C1_LiveLinq_Indexing_IndexCollection_1_Add__1_System_Linq_Expressions_Expression_System_Func__0___0___" data-uid="C1.LiveLinq.Indexing.IndexCollection`1.Add``1(System.Linq.Expressions.Expression{System.Func{`0,``0}})">Add&lt;TKey&gt;(Expression&lt;Func&lt;T, TKey&gt;&gt;)</h4>
<div class="markdown level1 summary"><p>Creates a new index and adds it to the collection of indexes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public Index&lt;T, TKey&gt; Add&lt;TKey&gt;(Expression&lt;Func&lt;T, TKey&gt;&gt; keySelector)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Function Add(Of TKey)(keySelector As Expression(Of Func(Of T, TKey))) As Index(Of T, TKey)</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.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">keySelector</span></td>
      <td><p>Key selector expression of the index, see <a class="xref" href="C1.LiveLinq.Indexing.IndexDefinition-1.KeySelector.html#C1_LiveLinq_Indexing_IndexDefinition_1_KeySelector">KeySelector</a>.</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.Indexing.Index-2.html">Index</a>&lt;T, TKey&gt;</td>
      <td><p>The new index added to the collection of indexes.</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">TKey</span></td>
      <td><p>The type of the index key.</p>
</td>
    </tr>
  </tbody>
</table>


<a id="C1_LiveLinq_Indexing_IndexCollection_1_Add_" data-uid="C1.LiveLinq.Indexing.IndexCollection`1.Add*"></a>
<h4 id="C1_LiveLinq_Indexing_IndexCollection_1_Add__1_System_Linq_Expressions_Expression_System_Func__0___0___System_Boolean_" data-uid="C1.LiveLinq.Indexing.IndexCollection`1.Add``1(System.Linq.Expressions.Expression{System.Func{`0,``0}},System.Boolean)">Add&lt;TKey&gt;(Expression&lt;Func&lt;T, TKey&gt;&gt;, bool)</h4>
<div class="markdown level1 summary"><p>Creates a new index and adds it to the collection of indexes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public Index&lt;T, TKey&gt; Add&lt;TKey&gt;(Expression&lt;Func&lt;T, TKey&gt;&gt; keySelector, bool keyIsUnque)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Function Add(Of TKey)(keySelector As Expression(Of Func(Of T, TKey)), keyIsUnque As Boolean) As Index(Of T, TKey)</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.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">keySelector</span></td>
      <td><p>Key selector expression of the index, see <a class="xref" href="C1.LiveLinq.Indexing.IndexDefinition-1.KeySelector.html#C1_LiveLinq_Indexing_IndexDefinition_1_KeySelector">KeySelector</a>.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></td>
      <td><span class="parametername">keyIsUnque</span></td>
      <td><p><b>true</b> if a unique index must be created.</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.Indexing.Index-2.html">Index</a>&lt;T, TKey&gt;</td>
      <td><p>The new index added to the collection of indexes.</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">TKey</span></td>
      <td><p>The type of the index key.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 id="C1_LiveLinq_Indexing_IndexCollection_1_Add__1_System_Linq_Expressions_Expression_System_Func__0___0___System_Boolean__remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>A unique index occupies less memory and performs better than a non-unique index (although the difference isn't dramatic).
Therefore, for unique keys, it's recommended to specify the corresponding index as unique.</p>
<p>But do that only if you are sure that the key is indeed unique, as it imposes a uniqueness constraint on the indexed collection.
An attempt to modify the indexed collection violating the uniqueness throws an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.invalidoperationexception">InvalidOperationException</a>.</p>
</div>
</div>
