devexpress получить поле из последней строки в дочернем списке

Мне нужна помощь в этом. У меня есть таблица A (главная) и таблица B (дочерняя). Я использую DevExpress XAF. Мне нужно оценить последнюю строку в дочернем элементе и показать ее пользователям в главной таблице А.

Допустим, таблица A имеет следующие поля: Oid, Employee, Address [Name] = Persistent file for Employee

Допустим, в таблице B есть следующие поля: Oid, Employee (ссылается на таблицу A), Status (Open, Assigned, Closed), Status Date.

В дочерней таблице есть по крайней мере 2 записи для каждой основной записи: Oid Статус сотрудника Статус Дата 1 Отметка «Открыт» 12.12.2015 2 Отметка «Назначено» 13.12.2015 3 Отметка «Закрыт» 29.12.2015

До сих пор я использовал это:

    [PersistentAlias("TableB[Status != 'Closed']")]
public GetStatus
{
   get
       {return EvaluateAlias(GetStatus)};
}

Я хочу показать в основной таблице A для каждого сотрудника последний статус дочернего списка. Когда я запускаю этот код, я получаю Open, потому что он отличается от Closed, но я хочу, чтобы последняя строка в таблице B была Status = Closed, она должна возвращать Closed. Не знаю, правильно ли я объяснил! Любые идеи? Спасибо


person Carlos Ferreira    schedule 15.01.2016    source источник


Ответы (1)


Вы должны использовать агрегатные функции для выбора последнего элемента коллекции, например, max и single функции.

[PersistentAlias("TableB.Max(Date)")]
public DateTime? GetLastActionDate
{
   get
       {return (DateTime?)EvaluateAlias(GetLastActionDate)};
}

[PersistentAlias("TableB[Date == GetLastActionDate].Single()")]
public TableB GetStatus
{
   get
       {return (TableB)EvaluateAlias(GetStatus)};
}
person ErikWitkowski    schedule 01.02.2016