C#Linq无法创建类型为'System.Object'的常量值。在此上下文中仅支持原始类型或枚举类型

时间:2018-10-04 20:42:14

标签: c# entity-framework linq lambda

我知道有与此类似的问题,但是我无法解决我的问题。

我有以下方法:

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);
            }
        }

我有一个带有VariationId属性的MessageStatus类,我需要将它们分组并为每个计数。问题是我需要在TrackingOpens上加入MessageId。此处的Linq语句返回标题中提到的异常。

whereFilter参数只是.where子句中的另一个Linq语句。

TrackingOpens没有字段VariationId,我无法将其添加到该模型中

有人可以帮我解决此Linq语句吗?

0 个答案:

没有答案