# System.Data.DataSetExtensions

**Kind:** Service

**Source:** `Pams/Logic/Pams.CurrencyConverter/Pams.CurrencyConverter.csproj` (line 1)

**Part of:** [Pams](subsystem-pams)

NuGet package dependency

`System.Data.DataSetExtensions` is a NuGet dependency declared by the `Pams.CurrencyConverter` project. It provides .NET extension methods for working with `DataSet` and `DataTable` objects, including LINQ-based queries used by server-side currency conversion logic.

## Diagram

```mermaid
sequenceDiagram
    participant Build as Project Build
    participant NuGet as NuGet Restore
    participant Converter as Pams.CurrencyConverter
    participant DataSet as DataSet Extensions

    Build->>NuGet: Restore System.Data.DataSetExtensions
    NuGet-->>Converter: Provide package assembly
    Converter->>DataSet: Query DataTable or DataSet with LINQ extensions
    DataSet-->>Converter: Return typed query results
```

## Usage

```ts
// The NuGet package runs in the .NET currency converter service.
// JavaScript clients access the service through its API.

async function convertCurrency(
  amount: string,
  fromCurrency: string,
  toCurrency: string,
) {
  const response = await fetch("/api/currency/convert", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      amount,
      fromCurrency,
      toCurrency,
    }),
  });

  if (!response.ok) {
    throw new Error("Currency conversion request failed");
  }

  return response.json();
}
```

## AI Coding Instructions

- Keep `System.Data.DataSetExtensions` as a server-side dependency; JavaScript clients cannot import or call the NuGet package directly.
- Use the package’s LINQ extension methods when querying `DataSet` or `DataTable` values in the .NET project.
- Check for missing tables, columns, and empty query results before reading values from a `DataSet`.
- Preserve the project’s existing legacy package declaration format when updating this dependency.
- Test currency conversion paths that depend on data returned from `DataSet` queries.

## Used by

7 references from 7 files. Each is a place in this repository where the symbol is actually used — go read one rather than trusting an example.

### Injected or called by (7)

- `Pams.API` — `Pams/API/Pams.API/Pams.API.csproj`:1
- `Pams.Security` — `Pams/Core/Pams.Security/Pams.Security.csproj`:1
- `Pams.Data` — `Pams/Data/Pams.Data/Pams.Data.csproj`:1
- `HelperTool` — `Pams/HelperTool/HelperTool.csproj`:1
- `Pams.Common` — `Pams/Logic/Common/Pams.Common.csproj`:1
- `Pams.Business` — `Pams/Logic/Pams.Business/Pams.Business.csproj`:1
- `Pams.CurrencyConverter` — `Pams/Logic/Pams.CurrencyConverter/Pams.CurrencyConverter.csproj`:1
