【发布时间】:2015-10-08 12:48:07
【问题描述】:
我有 2 张桌子 Job_table 和 Employee_table。我想在Employee_table 的索引视图中显示来自Job_table 的emp_id 和来自Employee_table 的相应emp_name。
为此,我创建了一个 ViewModel EmployeeViewModel 并将我的操作结果的索引视图与 IEnumerable<EmployeeViewModel> 绑定。 EmployeeViewModel 的定义如下所示:
public class EmployeeViewModel
{
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
public string JobName { get; set; }
//..Other memberVariables..
}
我的模型:
public class Employee
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int EmployeeId { get; set; }
public string EmployeeName { get; set; }
public string Address { get; set; }
public virtual ICollection<Job> Jobs { get; set; }
}
还有 WorkTable,为了我自己的方便,将其重命名为 Job:
public class Job
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int JobId { get; set; }
public string JobName { get; set; }
public JobCategory JobCategory { get; set; }
public int EmployeeId { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
在我的索引操作中,我通过连接两个表来创建一个结果集,将其绑定到 IEnumerable<EmployeeViewModel> 并将其作为模型传递给视图。正如我之前提到的,视图应该接收IEnumerable<EmployeeViewModel> 类型的模型,所以我需要查询我的实体,它应该是这样的:
public ActionResult Index()
{
//..something like this..this is IQueryable..
//...convert this to IEnumerable and send this as the model to ..
//..the Index View as shown below..here you are querying your own tables,
//.. Employee and Job,and binding the result to the EmployeeViewModel which
//.. is passed on to the Index view.
IEnumerable<EmployeeViewModel> model=null;
model = (from c in db.Employees
join q in db.Jobs on c.EmployeeId equals q.EmployeeId
from q in jobs.DefaultIfEmpty()
group new { q, c } by c into grp
select new EmployeeViewModel
{
EmployeeId = grp.Key.EmployeeId,
EmployeeName = grp.Key.EmployeeName,
});
return View(model);
}
我想显示如下结果:
|Employee 1|
|----------|
| Job 1 |
| Job 2 |
|Employee 2|
|----------|
| Job 3 |
| Job 4 |
| Job 5 |
但现在我的结果是
|Employee 1| |Employee 1|
|----------| |----------|
| Job 1 | | Job 2 |
|Employee 2| |Employee 2| |Employee 2|
|----------| |----------| |----------|
| Job 3 | | Job 4 | | Job |
如何删除重复项?
【问题讨论】:
标签: c# sql-server asp.net-mvc linq-to-sql