将循环转换为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。