0

我是 Linq 的新手,我很难在数据库中查询包含多个标签 ID 的结果。

所以,我有两个模型:

文件夹和字段标签。文件夹包含一个字符串,其中列出了所有 FieldTag ID。示例:1,2,3

SopFolder 类:

public class SopFolder
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime LastUpdated { get; set; }
        public int Status { get; set; }
        public string SopFields { get; set; }
        public virtual ICollection<SopFolder> SopFolderChildrens { get; set; }
        public virtual ICollection<SopBlock> Blocks { get; set; }
        public virtual ICollection<SopReview> Reviews { get; set; }
    }

SopFields 类:

public class SopField
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

我正在尝试构建一个查询,该查询返回一个 SopFolders 列表,然后我可以将其输出为模型(用于在视图中绑定)和/或 json。绑定等工作正常,但仅适用于完整的文件夹列表,不适用于 SopFields 过滤结果。该操作的 URL 可能如下所示:/SopFolders/ShowTree/?id=4&SopFields=1,2,4

我在构建提供 SopFields 过滤结果的查询时遇到问题。

谢谢你的建议。我使用 asp.net mvc 4。任何关于改进我的整个方法的想法都值得赞赏。

更新1(对评论的回答):

在发布此示例之前,我为 SopFields 使用了一个 int 集合,但我将其替换为一个字符串。从字符串中获取值也很容易,它可能会简化一些事情。无论如何,它也可能是一个 int 集合。对我来说没有区别。

我写的 url 只是为了说明将哪些参数传递给传递结果的操作。

所以我假设我有一个 fieldTags 的列表而不是一个字符串。

我在复杂的 linq 查询中不是很擅长,因为我必须深入了解这一点,但概念查询看起来像这样(我敢肯定,它不起作用):

public ActionResult Index(List<int> fieldTags,int id = 1 )
{

// other stuff
 var model =
              _db.SopFolders
             .Where(r => r.Id == id && r.SopFields.Contains(sopFields))
             .Select(r => new
             {
                 id = r.Id,
                 Text = r.Name,
                 hasChildren = r.SopFolderChildrens.Any()
             });
// more stuff
 return View(model);
}

问候, 马库斯

4

0 回答 0