实体框架 6 基于子项中的字段选择项
本文关键字:字段 选择 框架 实体 | 更新日期: 2023-09-27 18:04:19
EF6 MVC5
我有一张Orders
桌。每个订单都有一个Customer
。
我正在尝试搜索Orders
,这些客户的surname
包含字符串。
所以一个Order
有一个Customer
但一个Customer
可以有很多Orders
。
我不能完全得到我需要的东西。我假设先获得客户然后获取订单更好(更有效?(,而不是获取所有订单然后过滤客户 - 所以这是我的尝试:
List<Order> orders = new List<Order>();
orders = db.Contacts.Where(c => c.NameLast.Contains(surnameContains)).Select(c => c.Orders).ToList();
上面给出了错误:
无法隐式转换类型 'System.Collections.Generic.List>" 到"System.Collections.Generic.List">
所以我认为上面的内容是返回一个Orders
列表 - 这是有道理的 - 一个客户列表,每个Customer
都包含一个Orders
列表。我想也许我可以addRange
:
orders.AddRange(db.Contacts.Where(c => c.NameLast.Contains(surnameContains)).Select(c => c.Orders));
这也不起作用 - 错误=
参数 1:无法从 "系统.林克.IQueryable>" 到 'System.Collections.Generic.IEnumerable'
如果有任何指示可以帮助解决这个问题,我将不胜感激。我想要的结果是Order
列表。
在"订单"表中,是否有"客户/联系人"字段?如果是,您可以测试以下内容:
List<Order> orders = new List<Order>();
orders = db.Orders.Where(o => o.Customer.NameLast.Contains(surnameContains)).ToList();
如果在"订单"表中,您只有一个客户/联系人 ID,则可以测试以下内容:
List<int> ListeID = db.Contacts.Where(c => c.NameLast.Contains(surnameContains)).Select(c => c.ID).ToList();
List<Order> orders = new List<Order>();
orders = db.Orders.Where(o => ListeID.Contains(o.CustomerID)).ToList();
或类似的东西。