在 LINQ to Entities 查询中无法构造实体或复杂类型
2016-05-30 19:59
686 查看
摘要: LINQ错误代码:
正确写法:
原理: linq 选择数据时候 不能new 已知的对象,只能匿名的。 但是如果从一个 List 列表 就可以new 已知的类。实例
[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; }
相关文章推荐
- 在CSDN开通博客专栏后如何发布文章(图文)
- mysql设置合适的索引长度
- 在CSDN开通博客专栏后如何发布文章(图文)
- MySQL与Oracle的区别 之 事务的commit与rollback
- 面试题47:不用加减乘除做加法
- 摄像机标定
- Easy-题目15:191. Number of 1 Bits
- C#之tcp自动更新程序
- Android 深入理解Loader机制 让APP轻装上阵
- Android 深入理解Loader机制 让APP轻装上阵
- 团队作业7——团队分数分配
- 自定义类比较大小以及按照规则排序。
- 第十二周项目三:Time类中的运算符重载
- Easy-题目14:235.Lowest Common Ancestor of a Binary Search Tree
- 结构体和枚举
- 安装redis和php的redis扩展
- 第33章 :计算几何学
- 几种常用的css三角形
- Perl 处理日期的自定义函数
- 从Android代码中来记忆23种设计模式