> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinetica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# kinetica.Records.IShardKeyExtractor

> kinetica.Records.IShardKeyExtractor — Kinetica C# API

<div className="kinetica-doxygen">
  <div className="contents">
    <p>Interface for extracting shard key values from a record. <a href="#details">More...</a></p>

    <table className="memberdecls">
      <tr className="heading">
        <td colSpan="2">
          <h2 className="groupheader">
            <div id="pub-methods" />

            Public Member Functions
          </h2>
        </td>
      </tr>

      <tr className="memitem:a5d62ad22e258059a1d7b207b9ed0c107" id="r_a5d62ad22e258059a1d7b207b9ed0c107">
        <td className="memItemLeft" align="right" valign="top"><a className="el" href="/content/api/cs/structkinetica_1_1Records_1_1ShardKeyValues">ShardKeyValues</a> </td>
        <td className="memItemRight" valign="bottom"><a className="el" href="#a5d62ad22e258059a1d7b207b9ed0c107">GetShardKeyValues</a> ()</td>
      </tr>

      <tr className="memdesc:a5d62ad22e258059a1d7b207b9ed0c107">
        <td className="mdescLeft"> </td>
        <td className="mdescRight">Returns shard key column names and their typed values. <br /></td>
      </tr>

      <tr className="separator:a5d62ad22e258059a1d7b207b9ed0c107">
        <td className="memSeparator" colSpan="2"> </td>
      </tr>
    </table>

    <div id="details" />

    <h2 className="groupheader">Detailed Description</h2>

    <div className="textblock">
      <p>Interface for extracting shard key values from a record. </p>
      <p>Equivalent to Rust's ShardKeyExtractor trait.</p>
      <p>Implementing this interface enables shard-aware routing in the BulkInserter, allowing records to be sent directly to the correct worker node based on their shard key values.</p>

      <div className="fragment">
        <div className="line"><span className="keyword">public</span> <span className="keyword">class </span>SensorReading : <a className="code hl_interface" href="/content/api/cs/interfacekinetica_1_1Records_1_1IShardKeyExtractor">IShardKeyExtractor</a></div>

        <div className="line">
          {"{"}
        </div>

        <div className="line"> <span className="keyword">public</span> <span className="keywordtype">int</span> Id {"{"} <span className="keyword">get</span>; <span className="keyword">set</span>; {"}"}</div>
        <div className="line"> <span className="keyword">public</span> <span className="keywordtype">string</span> Region {"{"} <span className="keyword">get</span>; <span className="keyword">set</span>; {"}"}</div>
        <div className="line"> <span className="keyword">public</span> <span className="keywordtype">double</span> Value {"{"} <span className="keyword">get</span>; <span className="keyword">set</span>; {"}"}</div>

        <div className="line" />

        <div className="line"> <span className="keyword">public</span> ShardKeyValues <a className="code hl_function" href="#a5d62ad22e258059a1d7b207b9ed0c107">GetShardKeyValues</a>()</div>

        <div className="line">
          {"{"}
        </div>

        <div className="line"> <span className="comment">// Single shard key column</span></div>
        <div className="line"> <span className="keywordflow">return</span> ShardKeyValues.<a className="code hl_function" href="/content/api/cs/structkinetica_1_1Records_1_1ShardKeyValues#a432a72d6f8cbdc51620802a8b9a32197">Single</a>(<span className="stringliteral">"id"</span>, ShardKeyValue.Int(Id));</div>

        <div className="line" />

        <div className="line"> <span className="comment">// Or for composite shard keys:</span></div>
        <div className="line"> <span className="comment">// return new ShardKeyValues(</span></div>
        <div className="line"> <span className="comment">// ("id", ShardKeyValue.Int(Id)),</span></div>
        <div className="line"> <span className="comment">// ("region", ShardKeyValue.String(Region))</span></div>
        <div className="line"> <span className="comment">// );</span></div>

        <div className="line">
          {"}"}
        </div>

        <div className="line">
          {"}"}
        </div>

        <div className="ttc" id="ainterfacekinetica_1_1Records_1_1IShardKeyExtractor_html">
          <div className="ttname"><a href="/content/api/cs/interfacekinetica_1_1Records_1_1IShardKeyExtractor">kinetica.Records.IShardKeyExtractor</a></div>
          <div className="ttdoc">Interface for extracting shard key values from a record.</div>
          <div className="ttdef"><span className="b">Definition</span> <a href="https://github.com/kineticadb/kinetica-api-cs/blob/master/Kinetica/Records/IShardKeyExtractor.cs#L34">IShardKeyExtractor.cs:35</a></div>
        </div>

        <div className="ttc" id="ainterfacekinetica_1_1Records_1_1IShardKeyExtractor_html_a5d62ad22e258059a1d7b207b9ed0c107">
          <div className="ttname"><a href="#a5d62ad22e258059a1d7b207b9ed0c107">kinetica.Records.IShardKeyExtractor.GetShardKeyValues</a></div>
          <div className="ttdeci">ShardKeyValues GetShardKeyValues()</div>
          <div className="ttdoc">Returns shard key column names and their typed values.</div>
        </div>

        <div className="ttc" id="astructkinetica_1_1Records_1_1ShardKeyValues_html_a432a72d6f8cbdc51620802a8b9a32197">
          <div className="ttname"><a href="/content/api/cs/structkinetica_1_1Records_1_1ShardKeyValues#a432a72d6f8cbdc51620802a8b9a32197">kinetica.Records.ShardKeyValues.Single</a></div>
          <div className="ttdeci">static ShardKeyValues Single(string name, ShardKeyValue value)</div>
          <div className="ttdoc">Creates a ShardKeyValues collection with a single value.</div>
        </div>
      </div>

      <p className="definition">Definition at line <a className="el" href="https://github.com/kineticadb/kinetica-api-cs/blob/master/Kinetica/Records/IShardKeyExtractor.cs#L34">34</a> of file <a className="el" href="https://github.com/kineticadb/kinetica-api-cs/blob/master/Kinetica/Records/IShardKeyExtractor.cs">IShardKeyExtractor.cs</a>.</p>
    </div>

    <h2 className="groupheader">Member Function Documentation</h2>

    <div id="a5d62ad22e258059a1d7b207b9ed0c107" />

    <h2 className="memtitle"><span className="permalink"><a href="#a5d62ad22e258059a1d7b207b9ed0c107">◆ </a></span>GetShardKeyValues()</h2>

    <div className="memitem">
      <div className="memproto">
        <table className="memname">
          <tr>
            <td className="memname"><a className="el" href="/content/api/cs/structkinetica_1_1Records_1_1ShardKeyValues">ShardKeyValues</a> kinetica.Records.IShardKeyExtractor.GetShardKeyValues </td>
            <td>(</td>

            <td className="paramname">
              <span className="paramname">
                <span className="em" />
              </span>
            </td>

            <td>)</td>

            <td />
          </tr>
        </table>
      </div>

      <div className="memdoc">
        <p>Returns shard key column names and their typed values. </p>
        <p>Only columns that are part of the shard key need to be included. The values are used for computing the routing hash to determine which worker node should receive the record.</p>
        <p>For best performance, implement this method to avoid allocations when possible (e.g., use <a className="el" href="/content/api/cs/structkinetica_1_1Records_1_1ShardKeyValues#a432a72d6f8cbdc51620802a8b9a32197" title="Creates a ShardKeyValues collection with a single value.">ShardKeyValues.Single()</a> for single-column keys).</p>

        <div className="dl section return">
          <div className="dt">Returns</div>
          <div className="dd">A collection of (column name, value) pairs for the shard key.</div>
        </div>

        <p>Implemented in <a className="el" href="/content/api/cs/classkinetica_1_1Records_1_1GenericRecord#ae4e298fcfc114df0cc96072768fc683c">kinetica.Records.GenericRecord</a>.</p>
      </div>
    </div>

    <hr />

    The documentation for this interface was generated from the following file:

    <ul>
      <li>Kinetica/Records/<a className="el" href="https://github.com/kineticadb/kinetica-api-cs/blob/master/Kinetica/Records/IShardKeyExtractor.cs">IShardKeyExtractor.cs</a></li>
    </ul>
  </div>
</div>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.