C# 标记/字段的Linq查询
我是Linq新手,在查询数据库中包含多个标记ID的结果时遇到困难 因此,我有两个模型: 文件夹和字段标记。该文件夹包含一个字符串,其中列出了所有FieldTag ID。示例:1,2,3 SopFolder类: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
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);
}