获取列表中存在多个id的结果(包含所有id)
本文关键字:id 结果 包含所 获取 存在 列表 | 更新日期: 2023-09-27 18:02:58
我使用EF6,我有以下
public partial class Item
{
[Key]
public int ItemID{ get; set; }
public string ItemName{ get; set; }
public virtual ICollection<Item_Tags> Item_Tags { get; set; }
}
public partial class Item_Tags
{
[Key]
public int ItemTagID { get; set; }
public int ItemID { get; set; }
public int ItemTagPropID { get; set; }
public virtual Item_TagProps Item_TagProps { get; set; }
public virtual Items Items { get; set; }
}
我有一个列表标签,它有多个{23,27,44}ItemTagPropID值。
我需要的是找到与列表标签中所有ItemTagPropID匹配的所有项目。
我有一个下面的代码,从列表标签
获得所有具有任何ItemTagPropID的项目ItemList = db.Items.Where(u => u.Item_Tags.Any(l => Tags.Contains(l.ItemTagPropID)));
因此,如果item的ItemTagPropID为23,但没有27,它仍然会进入列表。
如何获取包含列表所有成员的item ?
下面的代码没有结果(将Any替换为All)
ItemList = db.Items.Where(u => u.Item_Tags.All(l => Tags.Contains(l.ItemTagPropID)));
您正在查找具有标签中所有标签的所有项目。你写的是相反的:项目,他们所有的标签都在标签。你需要的是:
ItemList = db.Items.Where(u => Tags.All(l => u.Item_Tags.Select(item_tag => item_tag.ItemTagPropID).ToList().Contains(l)));