返回一个列表,其中的成员属于另一个列表
本文关键字:列表 成员 属于 另一个 一个 返回 | 更新日期: 2023-09-27 18:10:18
我有两个表:
- 用户数据PK
UserId
- userorder with FK
UserID
我想做LINQ查询给我一个用户列表,成员是用户订单列表。
我试过:
var myNestedData = (from ub in db.Users
join ah in db.UsersOrders on ub.UserId equals ah.UserId
into joined
from j in joined.DefaultIfEmpty()
group j by new { ub.UserId, ub.UserName, ub.UserPhone, ub.Approved } into grouped
where grouped.Key.Approved == true
select new
{
UserId= grouped.Key.UserId,
UserName = grouped.Key.UserName,
UserPhone = grouped.Key.UserPhone,
Orders = grouped
}).ToList();
问题是我进入Orders
和Object<a,UsersOrders>
,这是我没有预料到的。
就性能而言,这是解决方案的正确方法吗?
在我看来,你应该能够保持这个简单:
var myNestedData = (from u in db.Users
where u.Approved == true
select new
{
User = u,
Orders = u.UserOrders
}).ToList();
您正在尝试获取所有已批准用户和该用户订单的列表。我错过什么了吗?
另外,uuserorders的名称将取决于您如何配置映射
改为
Orders = grouped.ToList()
要查看它是否存在潜在的性能问题,请查看生成的SQL,以查看它是否是N+1场景(意味着它对父记录运行一次查询,对子记录运行N次查询)。
我说potential是因为虽然可能不是禁食的方法,但它可能不是问题。如果没有明显的性能问题,我就不会担心它,而是专注于通过改善体验来使应用变得更好,这可能包括提高地图上其他区域的性能。