# System.Data.DataSetExtensions

**Kind:** Service

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

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

NuGet package dependency

`System.Data.DataSetExtensions` is a NuGet package dependency declared by `Pams.Data.csproj`. It adds LINQ-related extension methods for `DataSet` and `DataTable` types, allowing .NET data-access code to query legacy tabular data through APIs such as `AsEnumerable()` and `Field<T>()`.

## Diagram

```mermaid
sequenceDiagram
    participant Build as .NET Build
    participant Project as Pams.Data.csproj
    participant Package as System.Data.DataSetExtensions
    participant Data as DataSet/DataTable

    Build->>Project: Restore project dependencies
    Project->>Package: Resolve NuGet package
    Build->>Data: Compile code using extension methods
    Data-->>Build: LINQ-compatible table rows
```

## Usage

```ts
import { execFileSync } from "node:child_process";
import { resolve } from "node:path";

const projectFile = resolve("Pams/Data/Pams.Data/Pams.Data.csproj");

execFileSync("dotnet", ["restore", projectFile], {
  stdio: "inherit",
});

// The restored project can use System.Data.DataSetExtensions
// from its .NET data-access code.
```

## AI Coding Instructions

- Keep `System.Data.DataSetExtensions` referenced through `Pams.Data.csproj`; do not import it from TypeScript or JavaScript runtime code.
- Use this package when .NET code queries `DataTable` rows with LINQ extension methods such as `AsEnumerable()`.
- Check nullable database values before reading typed fields from `DataRow` objects.
- Preserve compatibility with existing `DataSet` and `DataTable` code when changing package references.
