返回一个列表,其中的成员属于另一个列表

本文关键字:列表 成员 属于 另一个 一个 返回 | 更新日期: 2023-09-27 18:10:18

我有两个表:

  1. 用户数据PK UserId
  2. 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();

问题是我进入OrdersObject<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是因为虽然可能不是禁食的方法,但它可能不是问题。如果没有明显的性能问题,我就不会担心它,而是专注于通过改善体验来使应用变得更好,这可能包括提高地图上其他区域的性能。