查询层次结构模型的数据

时间:2015-08-05 18:05:29

标签: c# asp.net-mvc entity-framework linq razor

我有一个表单,用户可以通过该表单找到有关其同事的联系信息。

这是我的表格:

<label class="control-label col-sm-2" for="pwd">Name:</label>
    <div class="col-sm-10"> 
      <input type="text" class="form-control" id="name" name="name"/>
    </div>
</div>
<button class="btn btn-primary" type="submit">Search</button>

我的模型如下:

Person: idPerson, fname, lname, bdate, mail
Employee: idEmp, hireDate, idPosition, mailCorp, idPerson

我希望按名称查找员工(包含在fname或lname中)并显示名称和mailCorp,如何使用Linq获取此信息,如何在视图中显示此信息。 (我使用EF)

我尝试做这样的事情,但它不起作用

控制器

public ActionResult searchOnDirectory(Person per)
{
    var query = from p in Person
                join e in Employee
                where e.Employee.fname.Contains(per.name)
                select new {p.fname, p.lname, e.mailCorp};
    return View(model);  // I don't know how to send the select result
}

查看

@foreach (var per in Model)
{
    <tr>
        <!--<td></td>-->
        <td>@per.fname @per.lname</td>
        <td> @per.Employee.mailCorp </td>
    </tr>
}    
PD:对不起,我必须翻译我的所有代码,因为我说西班牙语

1 个答案:

答案 0 :(得分:0)

未经测试,但我认为这是您要尝试的内容,您在查询中遗漏了on

 var query = from p in Person
                join e in Employee                     
                on p.idPerson equals e.idPerson
                where p.idPerson equals per.Name
                select new {p.fname, p.lname, e.mailCorp};

如果您只是根据ID查找此人,为什么不只是查询?