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

时间:2019-03-25 22:24:45

标签: c# asp.net list linq compare

我正在尝试比较2个列表,并根据第二个列表中不存在的项属性来创建第一个列表的新列表。抱歉,如果措辞不好,我将在下面尝试演示

我有2个列表:

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

和第三个列表:

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

我试图用“ UserList”中的对象填充第三个列表,如果“ OrderList”中不存在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();

可悲的是,我都没有运气。有更好的方法吗?

谢谢, 我真的很感激

1 个答案:

答案 0 :(得分: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不匹配的订单。