Linq для возврата записей, для которых нет последующей записи

У меня есть этот запрос, который подсчитывает общее количество +1, сделанных пользователем на нашем веб-сайте:

return db.tblGPlusOneClicks
    .Where(c => 
        c.UserID == UserID
        && c.IsOn
        )
    .Select(c=>c.URLID)
    .Distinct()
    .Count();

Данные взяты из этой таблицы:

enter image description here

Простой количество различных URL-адресов, где IsOn = true покажет количество страниц, которым они поставили +1. Однако таблица также сохраняет, когда они что-то un-plus1, сохраняя значение в IsOn как false.

Если я:

  • Добавлю одну мою домашнюю страницу
  • Отключу одну мою домашнюю страницу

Это не должно считаться плюсом для этого пользователя в нашем запросе, поскольку последним действием для этого URL для этого пользователя было не плюс 1 шт. Точно так же, если я:

  • Плюс одна моя домашняя страница
  • Отключить одну мою домашнюю страницу
  • Плюс одну мою домашнюю страницу
  • Отключить одну мою домашнюю страницу
  • Плюс одну мою домашнюю страницу

Это должно быть учтено в исходном запрос, поскольку последним действием для этого URL было добавление 1 к нему.

Как я могу изменить свой запрос для подсчета случаев, когда IsOn имеет значение истина , и это последнее известное действие для этого пользователя для этого URL-адреса? Я изо всех сил пытаюсь написать запрос, который делает это.

5
задан Tom Gullen 20 November 2011 в 22:56
поделиться