c# - 如何获取 list1 的任何项目 sublist1 至少有一个 list2 项目?
问题描述
我有一个用户列表,每个用户都有一些最喜欢的产品。所以每个用户都有一个最喜欢的产品列表。
在搜索面板中,我想检查一些产品,作为搜索结果,我想返回至少拥有这些检查产品之一的用户列表。最后一个。但不是没有检查任何这些产品的用户。
public class User
{
public long Id { get; set; }
public string Name { get; set; }
public List<UserProduct> UserProducts { get; set; }
public User()
{
}
public User(long id,string name,List<long> productIds)
{
Id = id;
Name = name;
UserProducts = productIds.Select(x => new UserProduct(id, x)).ToList();
}
}
public class Products
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public Products()
{
}
public Products(int productId,string name)
{
ProductId = productId;
ProductName = name;
}
}
public class UserProduct
{
public int Id { get; set; }
public long UserId { get; set; }
public long ProductId { get; set; }
public UserProduct()
{
}
public UserProduct(long userId,long productId)
{
ProductId = productId;
UserId = userId;
}
}
public class SearchDto
{
public List<long> SearchProductIds { get; set; }
}
public class Main
{
public void FillUsers()
{
List<Products> products=new List<Products>()
{
new Products(1,"a"),
new Products(2,"b"),
new Products(3,"c"),
new Products(4,"d"),
new Products(5,"e"),
new Products(6,"f"),
new Products(7,"g"),
};
List<User> users=new List<User>()
{
new User(1,"jack",new List<long>(){1} ),
new User(2,"Mary",new List<long>(){1,4} ),
new User(3,"Sam",new List<long>(){5} ),
new User(4,"Sara",new List<long>(){7,1,2} ),
};
SearchDto dto=new SearchDto()
{
SearchProductIds = new List<long> { 1,4}
};
//Here as search dto :I want to get Jack,Mary and Sara beacause they have 1 or 4 in their products
}
}
解决方案
假设您有一个您选择的产品的 ID 列表(selectedProductIdList
)
我假设您的
User
模型看起来像这样
public string Username {get; set;}
public string FirstName {get; set;}
//....
//more User data
//....
public List<Product> FavouriteProduct {get; set;}
您的用户搜索结果将是
var userList = listOfUsers.Where(u => u.FavouriteProduct.Where(p => selectedProductIdList.Contains(p.Id)));
推荐阅读
- angular - Angular matDatepicker 禁用日期转换
- flutter - Flutter:使用 rootNavigator 时 StreamBuilder 不渲染
- node.js - Pg-cursor 和 pg-query-stream 哪个更适合读取大约 1000 万行的大表?
- richfaces - RichFaces 3:如何应用/更改丰富的样式:pickList 显示的项目
- python - 如何删除数据框索引和列表(zip)括号
- php - Mysql重复
- r - 用 poly() 拟合 R 线性模型会给出不正确的系数
- reactjs - setState 不会改变 React 中的状态
- spring - 如何在方法内部而不是在方法级别使用 AOP 注释
- python - 如何有条件地从另一个数据框中替换 Pandas 数据框列值