获取列表中存在多个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)));

获取列表中存在多个id的结果(包含所有id)

您正在查找具有标签中所有标签的所有项目。你写的是相反的:项目,他们所有的标签都在标签。你需要的是:

ItemList = db.Items.Where(u => Tags.All(l => u.Item_Tags.Select(item_tag => item_tag.ItemTagPropID).ToList().Contains(l)));