C# 标记/字段的Linq查询

C# 标记/字段的Linq查询,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,我是Linq新手,在查询数据库中包含多个标记ID的结果时遇到困难 因此,我有两个模型: 文件夹和字段标记。该文件夹包含一个字符串,其中列出了所有FieldTag ID。示例:1,2,3 SopFolder类: public class SopFolder { public int Id { get; set; } public string Name { get; set; } public DateTime LastUpdated { g

我是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; }
    }
我试图构建一个查询,返回一个sopfolder列表,然后将其输出为模型(用于视图中的绑定)和/或json。绑定等工作正常,但仅适用于完整的文件夹列表,而不适用于筛选结果。操作的Url可能如下所示:/SopFolders/ShowTree/?id=4&SopFields=1,2,4

我很难构造一个能够传递筛选结果的查询

谢谢你的建议。我使用asp.NETMVC4。任何关于改进我的整个方法的想法都将受到赞赏

更新1(回复评论):

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

我编写的url只是为了说明传递给传递结果的操作的参数

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

我对复杂的linq查询不是很在行,因为我必须了解这一点,但是概念查询看起来是这样的(我确信它不起作用):

公共操作结果索引(列表字段标记,int id=1) { //其他东西 var模型= _db.SopFolders .Where(r=>r.Id==Id&&r.SopFields.Contains(SopFields)) .选择(r=>new { id=r.id, Text=r.名称, haschilds=r.SopFolderChildrens.Any() }); //更多的东西 返回视图(模型); } 问候,,
Marcus

为什么SopFolder.SopFields属性是字符串而不是int集合?另外,“行动的Url可能看起来像这样”,所以你检查了,或者你认为是这样?请用linq queryI解释你的问题,更新上面的帖子,提供关于你问题的信息。
public class SopField
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
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);
}