将循环转换为Linq-模型创建

将循环转换为Linq-模型创建,linq,entity-framework,Linq,Entity Framework,我正在将一个实体对象转换为一个模型,该模型可以在我的应用程序中传递,而无需额外的开销(以及为视图生成两个额外的字段等) public IEnumerable<PageModel> GetAllPages() { var AllPageO = _session.All<Page>(); IList<PageModel> RetO = new List<PageModel>

我正在将一个实体对象转换为一个模型,该模型可以在我的应用程序中传递,而无需额外的开销(以及为视图生成两个额外的字段等)

        public IEnumerable<PageModel> GetAllPages()
        {
            var AllPageO = _session.All<Page>();

            IList<PageModel> RetO = new List<PageModel>();

            foreach (var AP in AllPageO)
            {
                RetO.Add(new PageModel(AP));
            }

            return RetO.AsEnumerable();
        }
public IEnumerable GetAllPages()
{
var AllPageO=_session.All();
IList RetO=新列表();
foreach(AllPageO中的var AP)
{
添加(新页面模型(AP));
}
返回RetO.AsEnumerable();
}
这可以转换为Linq查询吗?下面的代码确实有效,我得到了错误

“/”应用程序中的服务器错误。仅限 无参数构造函数和 LINQ to中支持初始值设定项 实体

public IEnumerable GetAllPages()
{
var AllPageO=_session.All();
var RetO=从AllPageO中的EntityO选择新页面模型(EntityO);
返回RetO;
}
Resharper实际上将第一个循环转换为这个循环,这个循环也会失败,并出现相同的错误

IList<PageModel> RetO = PageO.Select(AP => new PageModel(AP)).ToList();
IList RetO=PageO.Select(AP=>newpagemodel(AP)).ToList();

这是因为entity framework正在尝试将优化投影表达式转换为sql

简单的解决方法是在投影之前枚举结果:

 var RetO = from EntityO in AllPageO.ToList() select new PageModel(EntityO);

这是因为EntityFramework正在尝试将优化投影表达式转换为sql

简单的解决方法是在投影之前枚举结果:

 var RetO = from EntityO in AllPageO.ToList() select new PageModel(EntityO);

太好了,我知道这件事。不知怎么的,我忘了。干杯jfar。太好了,我知道这件事。不知怎么的,我忘了。干杯jfar。