# C1.LiveLinq.IObservableSource-1

## Content

<div class="doc-site-dotnet-api-container">



  <h1 id="C1_LiveLinq_IObservableSource_1" data-uid="C1.LiveLinq.IObservableSource`1" class="text-break">IObservableSource&lt;T&gt; Interface
</h1>
  <div class="markdown level0 summary"><p>Provides methods and events that are required for LiveLinq functionality, indexing and live views.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <h6><strong>Namespace</strong>: <a class="xref" href="C1.LiveLinq.html">C1.LiveLinq</a></h6>
  <h6><strong>Assembly</strong>: C1.LiveLinq.4.8.dll</h6>
  <h5 id="C1_LiveLinq_IObservableSource_1_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public interface IObservableSource&lt;T&gt; : IEnumerable&lt;T&gt;, IEnumerable</code></pre>
  </div>
  <div class="codewrapper">
    <pre><code class="lang-vbnet hljs">Public Interface IObservableSource(Of T)
    Inherits IEnumerable(Of T), IEnumerable</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">T</span></td>
        <td><p>The type of the elements in the collection.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 id="C1_LiveLinq_IObservableSource_1_remarks"><strong>Remarks</strong></h5>
  <div class="markdown level0 remarks"><p>Indexing and live view functionality is available for any collection that supports change notifications
necessary for maintaining indexes and live views,
that is, fires events when an item is added to or removed from the collection and when a property of the item changes.
So, the members of this interface are mostly concerned with providing such notifications.</p>
<p>Classes implementing this interface usually also implement <a class="xref" href="C1.LiveLinq.Indexing.IIndexedSource-1.html">IIndexedSource&lt;T&gt;</a>.</p>
<p>Both these interfaces are implemented by all main LiveLinq collection classes: <a class="xref" href="C1.LiveLinq.Collections.IndexedCollection-1.html">IndexedCollection&lt;T&gt;</a>,
<a class="xref" href="C1.LiveLinq.AdoNet.IndexedDataTable-1.html">IndexedDataTable&lt;TRow&gt;</a>, <a class="xref" href="C1.LiveLinq.LiveViews.View-1.html">View&lt;T&gt;</a>.</p>
<p>You need to implement this interface only if you want to define your own indexable collection classes 
and then only if they don't inherit from <a class="xref" href="C1.LiveLinq.Collections.IndexedCollection-1.html">IndexedCollection&lt;T&gt;</a>,
see <span style="C1H Jump">LiveLinq to Objects: IndexedCollection(T) and other collection classes</span>.</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_IObservableSource_1_CreateNew" data-uid="C1.LiveLinq.IObservableSource`1.CreateNew">
          <a class="xref" href="C1.LiveLinq.IObservableSource-1.CreateNew.html#C1_LiveLinq_IObservableSource_1_CreateNew">CreateNew</a>
        </td>
        <td class="markdown level1 summary"><p>This delegate is used to create new items.
If it is null, a public parameterless constructor of type <b>T</b> is used.</p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_IObservableSource_1_IsDeletedStateAvailable" data-uid="C1.LiveLinq.IObservableSource`1.IsDeletedStateAvailable">
          <a class="xref" href="C1.LiveLinq.IObservableSource-1.IsDeletedStateAvailable.html#C1_LiveLinq_IObservableSource_1_IsDeletedStateAvailable">IsDeletedStateAvailable</a>
        </td>
        <td class="markdown level1 summary"><p>Gets a value indicating whether an item of this collection can still return
correct property values after it has been deleted from the collection.</p>
</td>
      </tr>
      <tr>
        <td id="C1_LiveLinq_IObservableSource_1_SupportsItemOrdinals" data-uid="C1.LiveLinq.IObservableSource`1.SupportsItemOrdinals">
          <a class="xref" href="C1.LiveLinq.IObservableSource-1.SupportsItemOrdinals.html#C1_LiveLinq_IObservableSource_1_SupportsItemOrdinals">SupportsItemOrdinals</a>
        </td>
        <td class="markdown level1 summary"><p>Gets a value that indicates whether this collection is capable of providing the
ordinal position of the changed item when it notifies of an item change.</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_IObservableSource_1_EnableItemOrdinals" data-uid="C1.LiveLinq.IObservableSource`1.EnableItemOrdinals">
          <a class="xref" href="C1.LiveLinq.IObservableSource-1.EnableItemOrdinals.html#C1_LiveLinq_IObservableSource_1_EnableItemOrdinals">EnableItemOrdinals()</a>
        </td>
        <td class="markdown level1 summary"><p>After this method is called, the collection is required to provide <a class="xref" href="C1.LiveLinq.SourceChangeEventArgs-1.Ordinal.html#C1_LiveLinq_SourceChangeEventArgs_1_Ordinal">Ordinal</a> in event data.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="events">Events
</h3>
  <table class="table table-bordered table-condensed">
    <thead>
      <tr>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="C1_LiveLinq_IObservableSource_1_Changed" data-uid="C1.LiveLinq.IObservableSource`1.Changed">
          <a class="xref" href="C1.LiveLinq.IObservableSource-1.Changed.html">Changed</a>
        </td>
        <td class="markdown level1 summary"><p>Occurs after an item of the collection or the entire collection has changed.</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.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>
