Table of Contents

Class Result

Namespace
YndigoBlue.Velocity.Model
Assembly
YndigoBlue.Velocity.dll

Represents a single row returned from a SELECT query.

public class Result : Datum
Inheritance
Result
Extension Methods

Examples

Basic query and result access:

using (Manager manager = new Manager(connection))
{
    manager.LoadSchema("my_schema");
    Schema schema = manager.GetSchema("my_schema");
    Table usersTable = schema["users"];

    Query query = new Query();
    query.AddFromItem(usersTable);
    query.AddSelectItem(usersTable["id"]);
    query.AddSelectItem(usersTable["username"]);
    query.AddSelectItem(usersTable["email"]);
    query.AddSelectItem(usersTable["created_at"]);

    IEnumerable<Result> results = manager.Retrieve(query);

    foreach (Result result in results)
    {
        int id = result.GetFieldInt("id");
        string username = result.GetFieldString("username");
        string email = result.GetFieldString("email");
        DateTime createdAt = result.GetFieldDateTime("created_at");

        Console.WriteLine($"{id}: {username} ({email}) - {createdAt}");
    }
}

Handling NULL values:

Query query = new Query();
query.AddFromItem(usersTable);
query.AddSelectItem(usersTable["id"]);
query.AddSelectItem(usersTable["last_login"]);

IEnumerable<Result> results = manager.Retrieve(query);

foreach (Result result in results)
{
    int id = result.GetFieldInt("id");

    if (result.IsNull(usersTable["last_login"]))
    {
        Console.WriteLine($"User {id} has never logged in");
    }
    else
    {
        DateTime lastLogin = result.GetFieldDateTime("last_login");
        Console.WriteLine($"User {id} last logged in: {lastLogin}");
    }
}

Binding results to C# objects:

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public DateTime CreatedAt { get; set; }
}

Query query = new Query();
query.AddFromItem(usersTable);
query.AddSelectItem(usersTable["id"]);
query.AddSelectItem(usersTable["username"]);
query.AddSelectItem(usersTable["email"]);
query.AddSelectItem(usersTable["created_at"]);

IEnumerable<Result> results = manager.Retrieve(query);

// Automatically bind results to User objects
List<User> users = manager.BindResults<User>(results, BindingType.SnakeCase);

foreach (User user in users)
{
    Console.WriteLine($"{user.Id}: {user.Username}");
}

Working with calculated fields:

Expression totalExpression = new Expression("total");
totalExpression.Add(ordersTable["quantity"]);
totalExpression.Add(new ArithmeticOperator(ArithmeticType.Multiply));
totalExpression.Add(ordersTable["price"]);

Query query = new Query();
query.AddFromItem(ordersTable);
query.AddSelectItem(ordersTable["id"]);
query.AddSelectItem(totalExpression);

IEnumerable<Result> results = manager.Retrieve(query);

foreach (Result result in results)
{
    int id = result.GetFieldInt("id");
    decimal total = result.GetFieldDecimal("total");
    Console.WriteLine($"Order {id}: ${total}");
}

Remarks

Result is the primary object for working with query data. Each Result instance represents one row from the database, with strongly-typed access to column values through inherited Datum methods.

Results are returned as collections from Retrieve(Query) and can be:

  • Accessed field-by-field using GetField* methods
  • Bound to C# objects using Engine.Manager.BindResults<T>(IEnumerable<Result>, Enums.BindingType)
  • Checked for NULL values using IsNull methods

Constructors

Result(OrderedDictionary<string, ISelectItem>)

Fields

_selectItems

Properties

FieldCount
Fields

Methods

GetFieldString(string)
GetFieldValue(string, DataType)
GetSelectItem(int)
GetSelectItem(string)
HasSelectItem(string)
IsNull(ISelectItem)

Determines if the select item is null within this datum either as a result of not being in the datum or being in the datum and being set to null.

SetFieldString(string, string)