这在SQL中很容易实现,我很难用Linq to SQL实现这一点。我有两个实体的建立,项目和ProjectsbyUser:如何根据另一个实体过滤实体? Linq多对多C#
[Table(Name = "Projects")]
public class Project
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, Name="Job")]
public string ProjectId { get; set; }
[Column(Name = "Description")]
public string Description { get; set; }
[Association(OtherKey = "ProjectId")]
private EntitySet<ProjectList> _projectlist = new EntitySet<ProjectList>();
public IEnumerable<ProjectList> ProjectList { get { return _projectlist; } }
}
[Table(Name = "ProjectLists")]
public class ProjectList
{
[Column(IsPrimaryKey = true)]
public string UserId { get; set; }
[Column(IsPrimaryKey = true)]
public string ProjectId { get; set; }
}
所以在我ProjectsController我也会有这样的:
public ViewResult myProject()
{
var query = projectsRepository.Projects
.Where(x => x.ProjectId == "H1000").ToList();
return View(query.ToList());
}
哎,你怎么知道,它会显示所有连接到用户项目H1000与我的观点内嵌几个很好的嵌套的foreach语句。尽可能简单,但我试图根据用户进行过滤。我可以让用户足够简单(与UserId列匹配的User.Identity.Name.ToString())。这很容易做到,但我没有想出一个方法来完成它,而不写出可怕的代码。这个blog post解释了我想要做的事情,但它似乎使用“Linq to SQL classes”模板,现在我的实体坐在漂亮的C#类文件中,而不是在VS2008华丽的GUI设计器文件中。必须有一个优雅的方式来解决这个问题,我已经为此工作了大约一周,并认为我可能会让自己陷入一个角落。谢谢你的帮助!