Skip to main content
.NET 8.0+

Session.ExecuteScalarAsync(String, CancellationToken) Method

Executes the specified SQL query and returns the first column of the first row in the result set returned by the query.

Namespace: DevExpress.Xpo

Assembly: DevExpress.Xpo.v24.2.dll

Declaration

public Task<object> ExecuteScalarAsync(
    string sql,
    CancellationToken cancellationToken = default(CancellationToken)
)

Parameters

Name Type Description
sql String

Specifies an SQL statement.

Optional Parameters

Name Type Default Description
cancellationToken CancellationToken null

A CancellationToken object that delivers a cancellation notice to the running operation.

Returns

Type Description
Task<Object>

A Task<TResult> that returns the first column of the first row in the query’s result set. A null reference (Nothing in Visual Basic) if the result set does not contain columns. DBNull.Value if the first column does not contain a value.

Remarks

Use ExecuteScalarAsync to query data stores for a single or aggregate value, without having to retrieve a result set.

The following example demonstrates how to use this method. Here, session is the Session instance.

using System.Threading;
using System.Threading.Tasks;
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
// ...
CancellationTokenSource cts = new CancellationTokenSource();
int ordersCount = await GetOrdersCountAsync(cts.Token);
// ...
public async Task<int> GetOrdersCountAsync(CancellationToken cancellationToken) {
    const string queryString = 
        "SELECT COUNT(*) FROM [Northwind].[dbo].[Orders]";
    object result = await session.ExecuteScalarAsync(
        queryString, 
        cancellationToken
    );
    return (int)result;
}

To learn more about executing SQL queries in XPO, refer to Direct SQL Queries.

Note

The ExecuteScalarAsync method sends queries directly, so the correct query syntax depends on a particular database server.

See Also