我正在尝试比较 2 个列表,并根据第二个列表上不存在的项目属性创建第一个列表的新列表。抱歉,如果措辞不好,我将尝试在下面演示
我有 2 个列表:
public IList<OrderList> OrderList { get; set; }
public IList<ApplicationUser> UserList { get; set; }
和第三个列表:
public IList<ApplicationUser> NoOrders { get; set; }
我正在尝试使用"用户列表"中的对象填充第三个列表,其中 FK Id 字段(如果"订单列表"中不存在)。创建尚未订购的用户列表。
我尝试使用的代码是:
NoOrders = UserList.Where(y => OrderList.Any(z => z.ApplicationUserId !=
y.id.ToString())).ToList();
我还尝试直接使用以下方法创建类列表:
NoOrders = await _db.ApplicationUser.Include(u => u.OrderRequest).Where(i
=> i.id != OrderRequest.ApplicationUserId.ToString()).ToListAsync();
可悲的是,这两种方法都没有运气。有没有更好的方法可以做到这一点?
谢谢 我真的很感激
我认为您的第一次尝试已步入正轨:
试试这个:
NoOrders = UserList.Where(y => OrderList.All(z => z.ApplicationUserId !=
y.id.ToString())).ToList();
或
NoOrders = UserList.Where(y => !OrderList.Any(z => z.ApplicationUserId ==
y.id.ToString())).ToList();
您正在检查是否有任何订单与用户 ID 不匹配,而您真正想要确保的是没有订单匹配。