Попытка найти альтернативный способ выражения выражения LINQ - PullRequest
0 голосов
/ 01 февраля 2012

В дополнение к предыдущему вопросу У меня была возможность упростить запрос, но проблема с поставщиком MySQL все еще возникает.

У меня есть таблица членства, в которой записываетсяявляется ли пользователь членом списка.Когда происходит обновление членства пользователя, записывается новая запись, а предыдущие записи остаются как есть, что позволяет вести историю их членства.Чтобы получить статус участника, необходимо выбрать его самую последнюю запись.

Пример некоторых данных о членстве в списке пользователей приведен ниже.Цель состоит в том, чтобы найти выражение LINQ, которое группирует по списку и пользователю, но возвращает только строку с последней вставленной записью.

List Name, Username, Comment, ExpiresOn, Inserted
Test List, joeb, second update, 2012-03-13 16:55:03, 2012-01-31 22:28:40
Test List, joeb, first update, 2012-02-13 16:55:01, 2012-01-31 22:28:39
Test List, joeb, initial, 2012-01-13 16:55:02, 2012-01-31 22:28:38

Мое выражение LINQ выглядит следующим образом.

var query = from mem in db.UserListMemberships
            where
             mem.Inserted >= (from mem2 in db.UserListMemberships where mem.UserID == mem2.UserID && mem.UserListID == mem2.UserListID orderby mem2.Inserted descending select mem2.Inserted).FirstOrDefault()
             select mem;

Проблема в том, что я получаю исключение от провайдера сущностей MySQL «MySql.Data.MySqlClient.MySqlException: неизвестный столбец« Extent1.UserID »в« предложении where »».Есть ли другой способ, которым я мог бы написать выражение, которое могло бы обойти исключение MySQL?

1 Ответ

1 голос
/ 01 февраля 2012

Попробуйте и посмотрите, работает ли он у вас:

var query =
    from mem in db.UserListMemberships
    group mem by mem.UserID into mems
    select mems.OrderByDescending(m => m.Inserted).First();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...