您的位置:首页 > 其它

在 LINQ to Entities 查询中无法构造实体或复杂类型

2016-05-30 19:59 686 查看
摘要: LINQ错误代码:
[code=language-cs]var orders = db.Orders.Where(o => o.UserId == userid).Select(c =>
new Order
{

OrderId = c.OrderId,
OrderDate = c.OrderDate,
Total = c.Total,
OrderDetails = db.OrderDetails.Where(od => od.OrderId == c.OrderId).ToList()

}
).ToList();


正确写法:

[code=language-cs]var orders = db.Orders.Where(o => o.UserId == userid).ToList().Select
(c =>
new Order
{OrderId = c.OrderId,
OrderDate = c.OrderDate,
Total = c.Total,
OrderDetails = db.OrderDetails.Where(od => od.OrderId == c.OrderId).ToList()}).ToList();

原理: linq 选择数据时候 不能new 已知的对象,只能匿名的。 但是如果从一个 List 列表 就可以new 已知的类。实例
[code=plain]  public List<CMS_MudidiTag_Area> GetAreaTagDataByMonth(int tagMonth, int tagType, int tagId = 0)
{
List<CMS_MudidiTag_Area> listTag = new List<CMS_MudidiTag_Area>();
using (var context = new CMSContext())
{
listTag = context.CMS_MudidiTag_Area
.Where(t => t.TagMonth == tagMonth && t.Status == 0 && t.TagType == tagType && (tagId == 0 || t.TagId == tagId))
.Join(context.CMS_MudidiTag_Info, a => a.TagId, i => i.TagId, (a, i) => new { Id = a.Id, TagName = a.TagName, TagAlias = i.InfoName }).ToList()
.Select(r => new CMS_MudidiTag_Area { Id = r.Id, TagName = r.TagName, TagAlias = r.TagAlias }).ToList();
}
return listTag;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: