Linq To SQL Выберите родительскую строку и верхнюю строку дочерней таблицы

Есть примеры для этого в SQL, и я их понимаю, но я не могу обойти это в Linq-SQL.

Существует две таблицы: "Счета" и "Учетные записи", связанные первичным ключом в "Счета", который, как ни удивительно, AccountID.

Мне нужно выбрать каждую строку "Учетная запись" и 1 дочернюю учетную запись AccountTransaction "Самые последние (первые 1 в порядке убывания").

Я пытался взломать некоторые примеры, которые я нашел, но не повезло (просто не понимаю, я думаю)...

Любая помощь приветствуется...

2 ответа

Решение

Это одно из возможных решений; это не красиво, но это должно работать:

from account in Accounts
select new
    {account.Name, account.Whatever,
    LastTransaction =
        account.AccountTransactions.OrderByDescending(t => t.Date).First()};

При этом будут выбраны все учетные записи, и, если таблица AccountTransactions имеет AccountID в качестве внешнего ключа, соединение будет выполнено автоматически. Все, что вам нужно сделать, это получить необходимые данные для учетной записи и получить последнюю транзакцию, упорядоченную по дате.

  1. tblLink link = (из c в context.tblRegionLinks, где c.LinkId == 3 && c.RegionId == 5 select c.tblLink).FirstOrDefault();

Работает нормально в моем случае.....

Надеюсь, это поможет кому-то еще.

Другие вопросы по тегам