比较2个对象列表,并根据第一个列表中的项目属性创建一个新列表,第二个列表中没有出现在ASP.NET中

问题描述 投票:0回答:1

我正在尝试比较2个列表,并根据第二个列表中没有的项目属性创建第一个列表的新列表。对不起,如果措辞不当,我会尝试在下面演示

我有2个清单:

public IList<OrderList> OrderList { get; set; }
public IList<ApplicationUser> UserList { get; set; }

和第三个清单:

public IList<ApplicationUser> NoOrders { get; set; }

我正在尝试用“UserList”中的对象填充第3个列表,其中FK Id字段如果不存在于“OrderList”中。创建未订购的用户列表。

我试图使用的代码是:

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();

可悲的是,我对这两种方法都没有运气。有一个更好的方法吗?

谢谢,我真的很感激

c# asp.net list linq compare
1个回答
1
投票

我认为你的第一次尝试正在进行中:

试试这个:

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不匹配的订单,而您确实要确保没有订单。

© www.soinside.com 2019 - 2024. All rights reserved.