# C1.LiveLinq.AdoNet.IndexedDataTable-1

## Content

<div class="doc-site-dotnet-api-container">



  <h1 id="C1_LiveLinq_AdoNet_IndexedDataTable_1" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1" class="text-break">IndexedDataTable&lt;TRow&gt; Class
</h1>
  <div class="markdown level0 summary"><p>A wrapper for the standard ADO.NET <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.data.datatable">DataTable</a> class allowing to use ADO.NET data sources in LiveLinq indexing and live views.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <div class="inheritance">
    <h5>Inheritance</h5>
    <div class="level0"><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
    <div class="level1"><span class="xref">IndexedDataTable&lt;TRow&gt;</span></div>
  </div>
  <div class="implements">
    <h5>Implements</h5>
    <div><a class="xref" href="C1.LiveLinq.IObservableSource-1.html">IObservableSource</a>&lt;TRow&gt;</div>
    <div><a class="xref" href="C1.LiveLinq.Indexing.IIndexedSource-1.html">IIndexedSource</a>&lt;TRow&gt;</div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1">IList</a>&lt;TRow&gt;</div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1">ICollection</a>&lt;TRow&gt;</div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;TRow&gt;</div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.componentmodel.itypedlist">ITypedList</a></div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.componentmodel.inotifypropertychanged">INotifyPropertyChanged</a></div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.componentmodel.ibindinglist">IBindingList</a></div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.ilist">IList</a></div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.icollection">ICollection</a></div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.ienumerable">IEnumerable</a></div>
    <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.componentmodel.icanceladdnew">ICancelAddNew</a></div>
  </div>
  <h6><strong>Namespace</strong>: <a class="xref" href="C1.LiveLinq.AdoNet.html">C1.LiveLinq.AdoNet</a></h6>
  <h6><strong>Assembly</strong>: C1.LiveLinq.4.8.dll</h6>
  <h5 id="C1_LiveLinq_AdoNet_IndexedDataTable_1_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class IndexedDataTable&lt;TRow&gt; : IObservableSource&lt;TRow&gt;, IIndexedSource&lt;TRow&gt;, IList&lt;TRow&gt;, ICollection&lt;TRow&gt;, IEnumerable&lt;TRow&gt;, ITypedList, INotifyPropertyChanged, IBindingList, IList, ICollection, IEnumerable, ICancelAddNew where TRow : DataRow</code></pre>
  </div>
  <div class="codewrapper">
    <pre><code class="lang-vbnet hljs">Public Class IndexedDataTable(Of TRow As DataRow)
    Implements IObservableSource(Of TRow), IIndexedSource(Of TRow), IList(Of TRow), ICollection(Of TRow), IEnumerable(Of TRow), ITypedList, INotifyPropertyChanged, IBindingList, IList, ICollection, IEnumerable, ICancelAddNew</code></pre>
  </div>
  <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">TRow</span></td>
        <td><p>The type of the rows of the <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.data.datatable">DataTable</a>. It is a class derived from <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.data.datarow">DataRow</a></p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 id="C1_LiveLinq_AdoNet_IndexedDataTable_1_remarks"><strong>Remarks</strong></h5>
  <div class="markdown level0 remarks"><p><b>Note:</b> The <b>IndexedDataTable</b> wrapper is owned by the original <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.data.datatable">DataTable</a> object
(in fact, it is stored in its <b>ExtendedProperties</b>). So, if you create a wrapper for the same data table several times,
it will be the same object.</p>
</div>
  <h3 id="properties">Properties
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_Count" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.Count">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.Count.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_Count">Count</a>
        </td>
        <td class="markdown level1 summary"><p>Gets the number of rows in the data table.</p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_Indexes" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.Indexes">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.Indexes.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_Indexes">Indexes</a>
        </td>
        <td class="markdown level1 summary"><p>The collection of indexes for this <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.html">IndexedDataTable&lt;TRow&gt;</a></p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_Item_System_Int32_" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.Item(System.Int32)">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.Item.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_Item_System_Int32_">this[int]</a>
        </td>
        <td class="markdown level1 summary"><p>Gets the row at the specified ordinal position.</p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_Table" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.Table">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.Table.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_Table">Table</a>
        </td>
        <td class="markdown level1 summary"><p>Gets the ADO.NET <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.data.datatable">DataTable</a> object represented by this <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.html">IndexedDataTable&lt;TRow&gt;</a>.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_BeginUpdate" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.BeginUpdate">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.BeginUpdate.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_BeginUpdate">BeginUpdate()</a>
        </td>
        <td class="markdown level1 summary"><p>Suspends notifications while massive changes are being made to a data table.</p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_EndUpdate" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.EndUpdate">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.EndUpdate.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_EndUpdate">EndUpdate()</a>
        </td>
        <td class="markdown level1 summary"><p>Ends notification suspension started with <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.BeginUpdate.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_BeginUpdate">BeginUpdate()</a>.</p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_AdoNet_IndexedDataTable_1_GetEnumerator" data-uid="C1.LiveLinq.AdoNet.IndexedDataTable`1.GetEnumerator">
          <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.GetEnumerator.html#C1_LiveLinq_AdoNet_IndexedDataTable_1_GetEnumerator">GetEnumerator()</a>
        </td>
        <td class="markdown level1 summary"><p>Returns an enumerator that iterates through the <a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.html">IndexedDataTable&lt;TRow&gt;</a>.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="extensionmethods">Extension Methods</h3>
  <div>
      <a class="xref" href="C1.LiveLinq.Hints.Indexed.html#C1_LiveLinq_Hints_Indexed__1___0_">Hints.Indexed&lt;T&gt;(T)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.Hints.Indexed.html#C1_LiveLinq_Hints_Indexed__1___0_C1_LiveLinq_IndexingHintAction_">Hints.Indexed&lt;T&gt;(T, IndexingHintAction)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.ToIndexed.html#C1_LiveLinq_IndexedQueryExtensions_ToIndexed__1_C1_LiveLinq_IObservableSource___0__">IndexedQueryExtensions.ToIndexed&lt;T&gt;(IObservableSource&lt;T&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.LiveViewExtensions.AsLive.html#C1_LiveLinq_LiveViewExtensions_AsLive__1_C1_LiveLinq_IObservableSource___0__">LiveViewExtensions.AsLive&lt;T&gt;(IObservableSource&lt;T&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.LiveViewExtensions.AsLive.html#C1_LiveLinq_LiveViewExtensions_AsLive__1_C1_LiveLinq_IObservableSource___0__C1_LiveLinq_LiveViews_ViewOrder_">LiveViewExtensions.AsLive&lt;T&gt;(IObservableSource&lt;T&gt;, ViewOrder)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.AsIndexed.html#C1_LiveLinq_IndexedQueryExtensions_AsIndexed__1_C1_LiveLinq_Indexing_IIndexedSource___0__">IndexedQueryExtensions.AsIndexed&lt;T&gt;(IIndexedSource&lt;T&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.GroupBy.html#C1_LiveLinq_IndexedQueryExtensions_GroupBy__2_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___">IndexedQueryExtensions.GroupBy&lt;TSource, TKey&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, TKey&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.GroupBy.html#C1_LiveLinq_IndexedQueryExtensions_GroupBy__3_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___System_Linq_Expressions_Expression_System_Func___1_System_Collections_Generic_IEnumerable___0____2___">IndexedQueryExtensions.GroupBy&lt;TSource, TKey, TResult&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, TKey&gt;&gt;, Expression&lt;Func&lt;TKey, IEnumerable&lt;TSource&gt;, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.GroupBy.html#C1_LiveLinq_IndexedQueryExtensions_GroupBy__3_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___System_Linq_Expressions_Expression_System_Func___0___2___">IndexedQueryExtensions.GroupBy&lt;TSource, TKey, TElement&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, TKey&gt;&gt;, Expression&lt;Func&lt;TSource, TElement&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.GroupBy.html#C1_LiveLinq_IndexedQueryExtensions_GroupBy__4_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___System_Linq_Expressions_Expression_System_Func___0___2___System_Linq_Expressions_Expression_System_Func___1_System_Collections_Generic_IEnumerable___2____3___">IndexedQueryExtensions.GroupBy&lt;TSource, TKey, TElement, TResult&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, TKey&gt;&gt;, Expression&lt;Func&lt;TSource, TElement&gt;&gt;, Expression&lt;Func&lt;TKey, IEnumerable&lt;TElement&gt;, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.GroupJoin.html#C1_LiveLinq_IndexedQueryExtensions_GroupJoin__4_C1_LiveLinq_Indexing_IIndexedSource___0__System_Collections_Generic_IEnumerable___1__System_Linq_Expressions_Expression_System_Func___0___2___System_Linq_Expressions_Expression_System_Func___1___2___System_Linq_Expressions_Expression_System_Func___0_System_Collections_Generic_IEnumerable___1____3___">IndexedQueryExtensions.GroupJoin&lt;TOuter, TInner, TKey, TResult&gt;(IIndexedSource&lt;TOuter&gt;, IEnumerable&lt;TInner&gt;, Expression&lt;Func&lt;TOuter, TKey&gt;&gt;, Expression&lt;Func&lt;TInner, TKey&gt;&gt;, Expression&lt;Func&lt;TOuter, IEnumerable&lt;TInner&gt;, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.Join.html#C1_LiveLinq_IndexedQueryExtensions_Join__4_C1_LiveLinq_Indexing_IIndexedSource___0__C1_LiveLinq_Indexing_IIndexedSource___1__System_Linq_Expressions_Expression_System_Func___0___2___System_Linq_Expressions_Expression_System_Func___1___2___System_Linq_Expressions_Expression_System_Func___0___1___3___">IndexedQueryExtensions.Join&lt;TOuter, TInner, TKey, TResult&gt;(IIndexedSource&lt;TOuter&gt;, IIndexedSource&lt;TInner&gt;, Expression&lt;Func&lt;TOuter, TKey&gt;&gt;, Expression&lt;Func&lt;TInner, TKey&gt;&gt;, Expression&lt;Func&lt;TOuter, TInner, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.Join.html#C1_LiveLinq_IndexedQueryExtensions_Join__4_C1_LiveLinq_Indexing_IIndexedSource___0__System_Collections_Generic_IEnumerable___1__System_Linq_Expressions_Expression_System_Func___0___2___System_Linq_Expressions_Expression_System_Func___1___2___System_Linq_Expressions_Expression_System_Func___0___1___3___">IndexedQueryExtensions.Join&lt;TOuter, TInner, TKey, TResult&gt;(IIndexedSource&lt;TOuter&gt;, IEnumerable&lt;TInner&gt;, Expression&lt;Func&lt;TOuter, TKey&gt;&gt;, Expression&lt;Func&lt;TInner, TKey&gt;&gt;, Expression&lt;Func&lt;TOuter, TInner, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.OrderByDescending.html#C1_LiveLinq_IndexedQueryExtensions_OrderByDescending__2_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___">IndexedQueryExtensions.OrderByDescending&lt;T, TKey&gt;(IIndexedSource&lt;T&gt;, Expression&lt;Func&lt;T, TKey&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.OrderBy.html#C1_LiveLinq_IndexedQueryExtensions_OrderBy__2_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___">IndexedQueryExtensions.OrderBy&lt;T, TKey&gt;(IIndexedSource&lt;T&gt;, Expression&lt;Func&lt;T, TKey&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.SelectMany.html#C1_LiveLinq_IndexedQueryExtensions_SelectMany__2_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0_System_Collections_Generic_IEnumerable___1____">IndexedQueryExtensions.SelectMany&lt;TSource, TResult&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, IEnumerable&lt;TResult&gt;&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.SelectMany.html#C1_LiveLinq_IndexedQueryExtensions_SelectMany__3_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0_System_Collections_Generic_IEnumerable___1____System_Linq_Expressions_Expression_System_Func___0___1___2___">IndexedQueryExtensions.SelectMany&lt;TSource, TCollection, TResult&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, IEnumerable&lt;TCollection&gt;&gt;&gt;, Expression&lt;Func&lt;TSource, TCollection, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.Select.html#C1_LiveLinq_IndexedQueryExtensions_Select__2_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0___1___">IndexedQueryExtensions.Select&lt;TSource, TResult&gt;(IIndexedSource&lt;TSource&gt;, Expression&lt;Func&lt;TSource, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.Where.html#C1_LiveLinq_IndexedQueryExtensions_Where__1_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0_System_Boolean___">IndexedQueryExtensions.Where&lt;T&gt;(IIndexedSource&lt;T&gt;, Expression&lt;Func&lt;T, bool&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.Where.html#C1_LiveLinq_IndexedQueryExtensions_Where__1_C1_LiveLinq_Indexing_IIndexedSource___0__System_Linq_Expressions_Expression_System_Func___0_System_Boolean___System_Boolean_">IndexedQueryExtensions.Where&lt;T&gt;(IIndexedSource&lt;T&gt;, Expression&lt;Func&lt;T, bool&gt;&gt;, bool)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.Join.html#C1_LiveLinq_IndexedQueryExtensions_Join__4_System_Collections_Generic_IEnumerable___0__C1_LiveLinq_Indexing_IIndexedSource___1__System_Linq_Expressions_Expression_System_Func___0___2___System_Linq_Expressions_Expression_System_Func___1___2___System_Linq_Expressions_Expression_System_Func___0___1___3___">IndexedQueryExtensions.Join&lt;TOuter, TInner, TKey, TResult&gt;(IEnumerable&lt;TOuter&gt;, IIndexedSource&lt;TInner&gt;, Expression&lt;Func&lt;TOuter, TKey&gt;&gt;, Expression&lt;Func&lt;TInner, TKey&gt;&gt;, Expression&lt;Func&lt;TOuter, TInner, TResult&gt;&gt;)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.IndexedQueryExtensions.ToIndexed.html#C1_LiveLinq_IndexedQueryExtensions_ToIndexed__1_System_ComponentModel_IBindingList_">IndexedQueryExtensions.ToIndexed&lt;T&gt;(IBindingList)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.LiveViewExtensions.AsLive.html#C1_LiveLinq_LiveViewExtensions_AsLive__1_System_ComponentModel_IBindingList_">LiveViewExtensions.AsLive&lt;T&gt;(IBindingList)</a>
  </div>
  <div>
      <a class="xref" href="C1.LiveLinq.LiveViewExtensions.AsLive.html#C1_LiveLinq_LiveViewExtensions_AsLive__1_System_ComponentModel_IBindingList_C1_LiveLinq_LiveViews_ViewOrder_">LiveViewExtensions.AsLive&lt;T&gt;(IBindingList, ViewOrder)</a>
  </div>

</div>
