首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ查询列表中的列表

LINQ查询列表中的列表
EN

Stack Overflow用户
提问于 2011-06-02 19:09:34
回答 2查看 3K关注 0票数 2

我有这样的情况:

我的ModelView:

代码语言:javascript
复制
public class Subject
{
   public int ID { get; set; }
   public string Name { get; set; }
   public int ProfessorID { get; set; }
   public string ProfessorFullName{ get; set; }
   public IList<Assistant> Assistants { get; set; }
}

public class Assistant
{
   public string AssistantFullName{ get; set; }
}

我的问题是:

代码语言:javascript
复制
var subjects = from subject in Entities.Subjects
                            from professor in subject.Lecturers
                            where professor.Professor == true
                            select new SSVN.ModelView.Subject()
                            {
                                ID = subject.ID,
                                Name= subject.Name,
                                ProfessorFullName= professor.LastName+ " " + professor.Name,
                                Assistants= (from subject1 in Entities.Subjects
                                            from assistant in subject1.Lecturers
                                            where assistant.Professor == false
                                            select new SSVN.ModelView.Assistant()
                                            {
                                                AssistantFullName = assistant.LastName+ " " + assistant.Name
                                            }).ToList()
                            };

当我打电话的时候:

subjects.ToList(); I出现异常:

代码语言:javascript
复制
LINQ to Entities does not recognize the method
'System.Collections.Generic.List`1[SSVN.ModelView.Assistant] ToList[Assistant]
(System.Collections.Generic.IEnumerable`1[SSVN.ModelView.Assistant])' method, and this 
method cannot be translated into a store expression.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-02 19:20:40

不能在linq-to-entities查询中调用ToList。Linq- to -entities查询总是映射到IEnumerable<T>,所以如果你想要linq-to- IList<T>,你必须在linq-to-objects中调用它。

试试这个:

代码语言:javascript
复制
var subjects = (from subject in Entities.Subjects
                from professor in subject.Lecturers
                where professor.Professor == true
                select new 
                    {
                        ID = subject.ID,
                        Name= subject.Name,
                        ProfessorFullName= professor.LastName+ " " + professor.Name,
                        Assistants= (from subject1 in Entities.Subjects
                                     from assistant in subject1.Lecturers
                                     where assistant.Professor == false
                                     select new SSVN.ModelView.Assistant()
                                         {
                                             AssistantFullName = assistant.LastName+ " " + assistant.Name
                                         })
                    }).AsEnumerable().Select(x => new SSVN.ModelView.Subject
                         {
                            ID = x.ID,
                            Name = x.Name,
                            ProfessorFullName = X.ProffesorFullName,
                            Assistants = x.Assistants.ToList()
                         });
票数 8
EN

Stack Overflow用户

发布于 2011-06-02 19:24:21

您不能也不应该在IQueryablle查询中使用ToList()。请注意,此查询必须转换为SQL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6213744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档