# `if`

## Description

Return one value if a condition is `true`, otherwise return an alternative value.

## Syntax

Like many functions in DataPrime, `if` supports [two notations](https://coralogix.com/docs/dataprime/language-reference/functions-reference/index.md), **function** and **method** notation. These interchangeable forms allow flexibility in how you structure expressions.

```dataprime
if(condition: bool, then: any, else: any?): any
```

```dataprime
(condition: bool).if(then: any, else: any?): any
```

## Arguments

| Name      | Type | Required  | Description                                 |
| --------- | ---- | --------- | ------------------------------------------- |
| condition | bool | **true**  | Condition to evaluate                       |
| then      | any  | **true**  | Value to return if the condition is `true`  |
| else      | any  | **false** | Value to return if the condition is `false` |

## Example

**Use case: Add a flag based on whether an IP belongs to a subnet**

If an IP is in the `10.0.0.0/8` range, mark it with a flag. This avoids recalculating the condition multiple times.

### Example data

```json
{
    "ip": "10.8.0.8"
}
```

### Example query

```dataprime
create is_in_10_subnet from if(ipInSubnet(ip, '10.0.0.0/8'), true, false)
```

```dataprime
create is_in_10_subnet from ip.ipInSubnet('10.0.0.0/8').if(true, false)
```

### Example output

```json
{
    "ip": "10.8.0.8",
    "is_in_10_subnet": true
}
```
