Исключение производных классов в функции Count в ядре платформы сущностей - PullRequest
0 голосов
/ 10 октября 2019

У меня есть следующее утверждение.

 List<ApplicationUserDto> peers = _context.ApplicationUsers
        .Select(m => new ApplicationUserDto
          {
              Id = m.Id,
              MyCount = m.GroupMemberships
                         .Count(pg => pg.StudentGroup.ReviewRoundId == reviewRoundId)
          }).ToList();

У меня есть другой класс, названный PeerStudentGroup, полученный из StudentGroup. В функции Count() я не хочу, чтобы они были включены. Я имею в виду, что хочу считать, только если это тип StudentGroup (а не другой класс, производный от него). Интересно, как мне этого добиться. Есть предложения?

Ответы [ 2 ]

3 голосов
/ 10 октября 2019

В этом случае вы можете использовать ключевое слово is , которое сравнивает типы экземпляров. Вы должны добавить !(pg.StudentGroup is PeerStudentGroup) к вашему состоянию.

Ваш код должен выглядеть следующим образом:

 List<ApplicationUserDto> peers = _context.ApplicationUsers
        .Select(m => new ApplicationUserDto
          {
              Id = m.Id,
              MyCount = m.GroupMemberships
                         .Count(pg => pg.StudentGroup.ReviewRoundId == reviewRoundId && !(pg.StudentGroup is PeerStudentGroup))
          }).ToList();
1 голос
/ 10 октября 2019

Это может помочь начать с:

Применить оператор .Where (фильтрация) перед проекцией (Выбрать), например

MyCount = m.GroupMemberships .Where(gm => !(gm is PeerStudentGroup)) [alternatively] typeof(gm) != typeof(PeerStudentGroup) .Count(pg => pg.StudentGroup.ReviewRoundId == reviewRoundId)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...