我正在尝试比较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();
可悲的是,我都没有运气。有更好的方法吗?
谢谢, 我真的很感激
答案 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不匹配的订单。