# GetTablesAndKeysAsync Method

## Overloads

| [GetTablesAndKeysAsync(Size, Size, Int32, Boolean, Boolean, Boolean)](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm#Qlik_Engine_App_GetTablesAndKeysAsync_Qlik_Engine_Size_Qlik_Engine_Size_System_Int32_System_Boolean_System_Boolean_System_Boolean_) |  | Returns:<br><br>\* The list of tables in an app and the fields inside each table.<br><br>\* The list of derived fields.<br><br>\* The list of key fields. |
| --- | --- | --- |
| [GetTablesAndKeysAsync(AsyncHandle, Size, Size, Int32, Boolean, Boolean, Boolean)](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm#Qlik_Engine_App_GetTablesAndKeysAsync_Qlik_Engine_AsyncHandle_Qlik_Engine_Size_Qlik_Engine_Size_System_Int32_System_Boolean_System_Boolean_System_Boolean_) |  | Returns:<br><br>\* The list of tables in an app and the fields inside each table.<br><br>\* The list of derived fields.<br><br>\* The list of key fields. |
| [GetTablesAndKeysAsync<T>(AsyncHandle, Func<Response, T>, Size, Size, Int32, Boolean, Boolean, Boolean)](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm#Qlik_Engine_App_GetTablesAndKeysAsync__1_Qlik_Engine_AsyncHandle_System_Func_Qlik_Engine_Communication_IO_Response___0__Qlik_Engine_Size_Qlik_Engine_Size_System_Int32_System_Boolean_System_Boolean_System_Boolean_) |  | Returns:<br><br>\* The list of tables in an app and the fields inside each table.<br><br>\* The list of derived fields.<br><br>\* The list of key fields. |

[](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm) [](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm)

## GetTablesAndKeysAsync(Size, Size, Int32, Boolean, Boolean, Boolean)

Returns:

* The list of tables in an app and the fields inside each table.
* The list of derived fields.
* The list of key fields.

### Declaration

```

          public Task<GetTablesAndKeysResult> GetTablesAndKeysAsync([QixName("qWindowSize")] Size windowSize, [QixName("qNullSize")] Size nullSize, [QixName("qCellHeight")] int cellHeight, [QixName("qSyntheticMode")] bool syntheticMode, [QixName("qIncludeSysVars")] bool includeSysVars, [QixName("qIncludeProfiling")] bool includeProfiling = false)
    
  
```

### Parameters

| Type | Name | Description |
| --- | --- | --- |
| [Size](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Size.htm) | windowSize | Size of the window that is used to display the results. |
| [Size](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Size.htm) | nullSize |  |
| System.Int32 | cellHeight | Height of a cell in a table in pixels. |
| System.Boolean | syntheticMode | One of:<br><br><ul> <li> <code>true</code> for internal table viewer:Shows a more detailed view on how the Qlik engine defines the relations between fields and the quality of the keys.</li> <li> <code>false</code> for source table viewer:Shows the natural relation between fields without reference to synthetic keys and resultant linking synthetic tables. Instead synthetic keys are represented by multiple connectors between tables.</li> </ul> |
| System.Boolean | includeSysVars | If set to true, the system variables are included. |
| System.Boolean | includeProfiling | If set to true, profiling information is included. |

### Returns

| Type | Description |
| --- | --- |
| System.Threading.Tasks.Task&lt;[GetTablesAndKeysResult](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.GetTablesAndKeysResult.htm)&gt; |  |

### Implements

[IApp.GetTablesAndKeysAsync(Size, Size, Int32, Boolean, Boolean, Boolean)](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.IApp.GetTablesAndKeysAsync.htm#Qlik_Engine_IApp_GetTablesAndKeysAsync_Qlik_Engine_Size_Qlik_Engine_Size_System_Int32_System_Boolean_System_Boolean_System_Boolean_)

[](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm) [](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm)

## GetTablesAndKeysAsync(AsyncHandle, Size, Size, Int32, Boolean, Boolean, Boolean)

Returns:

* The list of tables in an app and the fields inside each table.
* The list of derived fields.
* The list of key fields.

### Declaration

```

          public Task<GetTablesAndKeysResult> GetTablesAndKeysAsync(AsyncHandle asyncHandle, [QixName("qWindowSize")] Size windowSize, [QixName("qNullSize")] Size nullSize, [QixName("qCellHeight")] int cellHeight, [QixName("qSyntheticMode")] bool syntheticMode, [QixName("qIncludeSysVars")] bool includeSysVars, [QixName("qIncludeProfiling")] bool includeProfiling = false)
    
  
```

### Parameters

| Type | Name | Description |
| --- | --- | --- |
| [AsyncHandle](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.AsyncHandle.htm) | asyncHandle | Handle to asynchronous method request |
| [Size](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Size.htm) | windowSize | Size of the window that is used to display the results. |
| [Size](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Size.htm) | nullSize |  |
| System.Int32 | cellHeight | Height of a cell in a table in pixels. |
| System.Boolean | syntheticMode | One of:<br><br><ul> <li> <code>true</code> for internal table viewer:Shows a more detailed view on how the Qlik engine defines the relations between fields and the quality of the keys.</li> <li> <code>false</code> for source table viewer:Shows the natural relation between fields without reference to synthetic keys and resultant linking synthetic tables. Instead synthetic keys are represented by multiple connectors between tables.</li> </ul> |
| System.Boolean | includeSysVars | If set to true, the system variables are included. |
| System.Boolean | includeProfiling | If set to true, profiling information is included. |

### Returns

| Type | Description |
| --- | --- |
| System.Threading.Tasks.Task&lt;[GetTablesAndKeysResult](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.GetTablesAndKeysResult.htm)&gt; |  |

### Implements

[IApp.GetTablesAndKeysAsync(AsyncHandle, Size, Size, Int32, Boolean, Boolean, Boolean)](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.IApp.GetTablesAndKeysAsync.htm#Qlik_Engine_IApp_GetTablesAndKeysAsync_Qlik_Engine_AsyncHandle_Qlik_Engine_Size_Qlik_Engine_Size_System_Int32_System_Boolean_System_Boolean_System_Boolean_)

[](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm) [](https://help.qlik.com/en-US/sense-developer/Subsystems/NetSDKAPIref/Content/Qlik.Engine.App.GetTablesAndKeysAsync.htm)

## GetTablesAndKeysAsync&lt;T&gt;(AsyncHandle, Func&lt;Response, T&gt;, Size, Size, Int32, Boolean, Boolean, Boolean)

Returns:

* The list of tables in an app and the fields inside each table.
* The list of derived fields.
* The list of key fields.

### Declaration

```
public Task<T> GetTablesAndKeysAsync<T>(AsyncHandle asyncHandle, Func<Response, T> onResult, [QixName("qWindowSize")] Size windowSize, [QixName("qNullSize")] Size nullSize, [QixName("qCellHeight")] int cellHeight, [QixName("qSyntheticMode")] bool syntheticMode, [QixName("qIncludeSysVars")] bool includeSysVars, [QixName("qIncludeProfiling")] bool includeProfiling = false)
```

### Parameters

| Type | Name | Description |
| --- | --- | --- |
| [AsyncHandle](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.AsyncHandle.htm) | asyncHandle | Handle to asynchronous method request |
| System.Func&lt;[Response](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Communication.IO.Response.htm), T&gt; | onResult | Continuation function |
| [Size](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Size.htm) | windowSize | Size of the window that is used to display the results. |
| [Size](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.Size.htm) | nullSize |  |
| System.Int32 | cellHeight | Height of a cell in a table in pixels. |
| System.Boolean | syntheticMode | One of:<br><br><ul> <li> <code>true</code> for internal table viewer:Shows a more detailed view on how the Qlik engine defines the relations between fields and the quality of the keys.</li> <li> <code>false</code> for source table viewer:Shows the natural relation between fields without reference to synthetic keys and resultant linking synthetic tables. Instead synthetic keys are represented by multiple connectors between tables.</li> </ul> |
| System.Boolean | includeSysVars | If set to true, the system variables are included. |
| System.Boolean | includeProfiling | If set to true, profiling information is included. |

### Returns

| Type | Description |
| --- | --- |
| System.Threading.Tasks.Task&lt;T&gt; |  |

### Type Parameters

| Name | Description |
| --- | --- |
| T |  |

### Implements

[IApp.GetTablesAndKeysAsync<T>(AsyncHandle, Func<Response, T>, Size, Size, Int32, Boolean, Boolean, Boolean)](https://help.qlik.com/en-US/sense-developer/May2026/Subsystems/NetSDKAPIref/Content/Qlik.Engine.IApp.GetTablesAndKeysAsync.htm#Qlik_Engine_IApp_GetTablesAndKeysAsync__1_Qlik_Engine_AsyncHandle_System_Func_Qlik_Engine_Communication_IO_Response___0__Qlik_Engine_Size_Qlik_Engine_Size_System_Int32_System_Boolean_System_Boolean_System_Boolean_)