這在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設計器文件中。必須有一個優雅的方式來解決這個問題,我已經爲此工作了大約一週,並認爲我可能會讓自己陷入一個角落。謝謝你的幫助!