C # Linq Невозможно создать постоянное значение типа 'System.Object'.В этом контексте поддерживаются только примитивные типы или типы перечисления - PullRequest
0 голосов
/ 04 октября 2018

Я знаю, что на этот вопрос есть несколько похожих вопросов, но я не могу решить мою проблему.

У меня есть следующий метод:

public IDictionary<string, int> CountXXX(Expression<Func<MessageStatus, bool>> whereFilter = null)
        {
            try
            {
                var trackingOpens = whereFilter != null ? _context.MessageStatus.Where(whereFilter).Join(_context.TrackingOpens, x => x.MessageId, g => g.MessageId, (x, g) => x) : 
                  _context.MessageStatus.Join(_context.TrackingOpens, x => x.MessageId, g => g.MessageId, (x, g) => x);

                return trackingOpens
                    .GroupBy(x => x.VariationId)
                    .Select(g => new { Variation = g.Key.ToString(), Count = g.Count() })
                    .ToDictionary(x => x.Variation, x => x.Count);
            }
            catch (Exception e)
            {
                throw new Exception($"There's been an error trying to count the tracking opens from the database. Details: {e.Message}", e);
            }
        }

У меня есть класс MessageStatus со свойством VariationId, мне нужно сгруппировать их и подсчитать для каждого.Проблема в том, что мне нужно присоединиться с TrackingOpens на MessageId.Здесь оператор Linq возвращает исключение, указанное в заголовке.

Параметр whereFilter - это просто еще один оператор Linq, который входит в предложение .where.

TrackingOpens не имеет поля VariationId, и я не могу добавить его в эту модель

Может кто-нибудь помочь мне исправить это утверждение Linq?

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