【问题标题】:Linq to Entities does not recognize the method collection DictionaryLinq to Entities 无法识别方法集合 Dictionary
【发布时间】:2015-05-15 00:01:38
【问题描述】:

我有一个名为 EmailDetailModel 的模型,带有一个 Dictionary 字段。

我的查询是:

var query = from email in context.EmailModel
            where rolesForUser.Contains(email.GroupName)
            orderby email.Id descending
            select new EmailDetailModel() 
            {
                From = email.From,
                Id = email.Id,
                message = email.Body,
                subject = email.Subject,
                pathFileName =
                       (from pdf in context.PdfModel
                        where pdf.Email_Id == email.Id
                        select pdf)
                    .ToDictionary(k => k.PathFile, v => v.FileName),
                timeSend = email.ActiveTime};

但是,当尝试将列表发送到视图时,此行出现错误:

View(query.ToPagedList(pageNumber, pageSize));

这么说:

LINQ to Entities 无法识别方法“System.Collections.Generic.Dictionary”

如果有人可以帮助我,我不确定如何将键和值传递到我的 pathFileName 字典中。

【问题讨论】:

  • 你真的需要Dictionary吗?一个简单的List<blah> 怎么样,其中 blah 是具有 2 个属性的类型?
  • .ToDictionary() 没有 SQL 版本。您需要从 SQL 中提取数据(将其物化),然后根据需要对其进行按摩 - .ToDictionary().

标签: asp.net linq


【解决方案1】:

问题可能是 LINQ to Entities 可以理解的字典生成没有类似 SQL 的转换。

每当 LINQ 无法转换为 SQL 语句时,我都会遇到类似的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2012-04-03
    • 2021-11-06
    • 2012-05-03
    相关资源
    最近更新 更多