查询模型中的标签ID

时间:2013-07-15 23:12:30

标签: c# linq asp.net-mvc-4

我有两个多对多关系的实体:

public class SopFolder
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual ICollection<SopField> SopFields { get; set; }
    }

public class SopField
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual ICollection<SopFolder> SopFolders { get; set; }
    }

将一个SopFolder实体分配给多个SopField。我现在想要过滤分配了某些SopField的SopFolders。我有一个包含SopField Id的IEnumerable<int> fieldTags

如何检查是否将一个SopFolder实体分配给一组特定的SopFields(例如SopField ID 1和2)?

我的方法(不起作用)是:

if(SopFolder.SopFields.Any(x => fieldTags.Contains(x.Id))) { /* do stuff */ }

2 个答案:

答案 0 :(得分:0)

如果您正在寻找一个以所有分配的SopFields为特色的SopFolder,请尝试:

if (SopFolder.SopFields.All(x => fieldTags.Contains(x.Id))) { /* do stuff */ }

答案 1 :(得分:0)

此查询正确且有效。我只是在递归的文件夹循环中以错误的方式使用。

if(SopFolder.SopFields.Any(x => fieldTags.Contains(x.Id))) { /* do stuff */ }