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

时间:2015-07-15 19:55:43

标签: c# linq entity-framework

我正在使用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; }

    }

我有一个List标签,它有多个{23,27,44} ItemTagPropID值。

我需要的是找到与列表标签中所有ItemTagPropID匹配的所有项目。

我有一个以下代码,可以从List Tags

中获取所有具有任何ItemTagPropID的项目
ItemList = db.Items.Where(u => u.Item_Tags.Any(l => Tags.Contains(l.ItemTagPropID)));

因此,如果item的ItemTagPropID为23但没有27,则它仍然会进入列表。

如何只获取包含列表中所有成员的项目?

以下代码未给出任何结果(将Any替换为All)

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

1 个答案:

答案 0 :(得分:2)

您正在寻找包含标签中所有标签的所有商品。 你写的是相反的:所有标签都在标签中的项目。 你需要的是:

<li>
    <p dir="ltr" style="line-height: 1.15; margin-top: 0pt; margin-bottom: 0pt; text-align: justify;"><span style="background-color: transparent; vertical-align: baseline; white-space: pre-wrap;">Text to display</span>
    </p></li>