Я знаю, что на этот вопрос есть несколько похожих вопросов, но я не могу решить мою проблему.
У меня есть следующий метод:
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?